我是初学者,正在使用Zend Framework 2.3.3。我正在尝试做一些路由,但它总是不起作用。我添加了一个名为Manager
的新模块,文件\ module \ Manager \ config \ module.config.php中的以下代码
'router' => array(
'routes' => array(
'auth' => array(
'type' => 'Literal',
'options' => array(
'route' => '/tologinpage',
'defaults' => array(
'controller' => 'Manager\Controller\Auth',
'action' => 'show-login',
),
),
'may_terminate' => true,
'child_routes' => array(
'login' => array(
'type' => 'Literal',
'options' => array(
'route' => '/login',
'defaults' => array('action' => 'login'),
),
'may_terminate' => true,
),
),
),
),
),
文件\ module \ Manager \ view \ manager \ auth \ login.phtml
中的以下代码<form class="form-horizontal" role="form" method="post" action="/login">
<!-- code -->
<div class="col-md-offset-2 col-md-8">
<button type="submit" class="btn btn-block btn-primary">Login</button>
</div>
</div>
如果我尝试访问第一条路线(/ tologinpage),它可以工作,
但是当我将表单提交给控制器AuthController\login
时,它始终显示发生了404错误页面未找到
这是我的控制器
namespace Manager\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class AuthController extends AbstractActionController
{
public function showLoginAction()
{
$view = new ViewModel();
$view->setTemplate('manager/auth/login');
$view->setTerminal(true); // close layout
return $view;
}
public function loginAction()
{
var_dump($_POST);
exit;
}
}
答案 0 :(得分:2)
loginAction的网址不是/login
,而是/tologinpage/login
,因为login
路由被定义为tologinpage
路由的子网。
顺便说一下,你不应该手工编写URL,而是使用URL view helper:
<form class="form-horizontal" role="form" method="post" action="<?php echo $this->url('auth/login'); ?>">
如果您希望在同一级别上创建这些角色,请将它们放在配置数组中的相同级别:
'router' => array(
'routes' => array(
'auth' => array(
'type' => 'Literal',
'options' => array(
'route' => '/tologinpage',
'defaults' => array(
'controller' => 'Manager\Controller\Auth',
'action' => 'show-login',
),
),
),
'login' => array(
'type' => 'Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'controller' => 'Manager\Controller\Auth',
'action' => 'login',
),
),
),
),
),