如何在 zend framework 2 中配置路由?
How to configure route in zend framework 2?
我是 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;
}
}
loginAction 的 URL 不是 /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',
),
),
),
),
),
我是 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;
}
}
URL 不是 /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',
),
),
),
),
),