Действие не выполнено

Ребята создаю модуль Auth и внутри моего AuthController У меня есть три метода:

1. loginAction()

2. autheticateAction()

3. logoutAction()

Проблема в том, когда я отправляю форму autheticate() метод не выполняется:

$form->setAttribute('action', $this->url('login/process',array('action'     => 'authenticate', )));

Исключение говорит: «Я должен иметь представление об этом действии»:

Zend \ View \ Renderer \ PhpRenderer :: render: Невозможно отобразить шаблон «auth / auth / authenticate»; распознаватель не может разрешить в файл

Мне просто нужен этот метод для процесса отправки данных !!!

внутри loginAction() Я просто возвращаю форму и сообщения для рендера и autheticationAction для обработки данных:

public function loginAction()
{
//if already login, redirect to success page
if ($this->getAuthService()->hasIdentity()){
return $this->redirect()->toRoute('success');
}
$form       = $this->getForm();
return array(
'form'      => $form,
'messages'  => $this->flashmessenger()->getMessages()
);
}
public function authenticateAction()
{
$form       = $this->getForm();
$redirect = 'login';
$request = $this->getRequest();
if ($request->isPost()){
$form->setData($request->getPost());
if ($form->isValid()){
//check authentication...
$this->getAuthService()->getAdapter()
->setIdentity($request->getPost('username'))
->setCredential($request->getPost('password'));
$result = $this->getAuthService()->authenticate();
foreach($result->getMessages() as $message)
{
//save message temporary into flashmessenger
$this->flashmessenger()->addMessage($message);
}
if ($result->isValid()) {
$redirect = 'success';
//check if it has rememberMe :
if ($request->getPost('rememberme') == 1 ) {
$this->getSessionStorage()
->setRememberMe(1);
//set storage again
$this->getAuthService()->setStorage($this->getSessionStorage());
}
$this->getAuthService()->getStorage()->write($request->getPost('username'));
}
}
}
return $this->redirect()->toRoute($redirect);
}

И вот мой конфиг маршрута:

    'login' => array(
'type'    => 'Literal',
'options' => array(
'route'    => '/auth',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller'    => 'Auth',
'action'        => 'login',
),
),
'may_terminate' => true,
'child_routes' => array(
'process' => array(
'type'    => 'Segment',
'options' => array(
'route'    => '/[:action]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),

Есть ли способ не определять конкретные view за каждое действие? Мне действительно не нужен вид для этого autheticationAction()

Трассировки стека:

#0 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-view\src\View.php(205): Zend\View\Renderer\PhpRenderer->render(Object(Zend\View\Model\ViewModel))
#1 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-view\src\View.php(233): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#2 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-view\src\View.php(198): Zend\View\View->renderChildren(Object(Zend\View\Model\ViewModel))
#3 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-mvc\src\View\Http\DefaultRenderingStrategy.php(103): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#4 [internal function]: Zend\Mvc\View\Http\DefaultRenderingStrategy->render(Object(Zend\Mvc\MvcEvent))
#5 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-eventmanager\src\EventManager.php(444): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#6 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-eventmanager\src\EventManager.php(205): Zend\EventManager\EventManager->triggerListeners('render', Object(Zend\Mvc\MvcEvent), Array)
#7 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-mvc\src\Application.php(353): Zend\EventManager\EventManager->trigger('render', Object(Zend\Mvc\MvcEvent))
#8 D:\xampp\htdocs\AddskProject\vendor\zendframework\zend-mvc\src\Application.php(328): Zend\Mvc\Application->completeRequest(Object(Zend\Mvc\MvcEvent))
#9 D:\xampp\htdocs\AddskProject\public\index.php(21): Zend\Mvc\Application->run()
#10 {main}

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]