模块/的applcation /配置/ module.config.php
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
),
'application' => array(
'type' => 'Segment',
'options' => array(
'route' => '/application[/:action][/]',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
),
),
),
在我的IndexController.php中,我有一个indexAction()和validateAction() - (只是试验它们真的没有函数)
我可以很好地了解意见。但我写在视图中:
echo $this->url('application',array('action' => 'validate'));
它只是回声
/application/
如何通过动作回应路径?我已经尝试了所有我能想到的东西,并且找不到任何合理的文件或其他有同样问题的人。
这是config的页面加载时的var_dump:
array(5) {
["router"]=>
array(1) {
["routes"]=>
array(2) {
["home"]=>
array(2) {
["type"]=>
string(28) "Zend\Mvc\Router\Http\Literal"
["options"]=>
array(2) {
["route"]=>
string(1) "/"
["defaults"]=>
array(2) {
["controller"]=>
string(28) "Application\Controller\Index"
["action"]=>
string(5) "index"
}
}
}
["application"]=>
array(2) {
["type"]=>
string(7) "segment"
["options"]=>
array(2) {
["route"]=>
string(25) "/application[/:action][/]"
["defaults"]=>
array(3) {
["__NAMESPACE__"]=>
string(22) "Application\Controller"
["controller"]=>
string(5) "Index"
["action"]=>
string(5) "index"
}
}
}
}
}
["service_manager"]=>
array(1) {
["factories"]=>
array(1) {
["translator"]=>
string(45) "Zend\I18n\Translator\TranslatorServiceFactory"
}
}
["translator"]=>
array(2) {
["locale"]=>
string(5) "en_US"
["translation_file_patterns"]=>
array(1) {
[0]=>
array(3) {
["type"]=>
string(7) "gettext"
["base_dir"]=>
string(57) "/home/marshall/html/module/Application/config/../language"
["pattern"]=>
string(5) "%s.mo"
}
}
}
["controllers"]=>
array(1) {
["invokables"]=>
array(1) {
["Application\Controller\Index"]=>
string(38) "Application\Controller\IndexController"
}
}
["view_manager"]=>
array(7) {
["display_not_found_reason"]=>
bool(true)
["display_exceptions"]=>
bool(true)
["doctype"]=>
string(5) "HTML5"
["not_found_template"]=>
string(9) "error/404"
["exception_template"]=>
string(11) "error/index"
["template_map"]=>
array(4) {
["layout/layout"]=>
string(73) "/home/marshall/html/module/Application/config/../view/layout/layout.phtml"
["application/index/index"]=>
string(83) "/home/marshall/html/module/Application/config/../view/application/index/index.phtml"
["error/404"]=>
string(69) "/home/marshall/html/module/Application/config/../view/error/404.phtml"
["error/index"]=>
string(71) "/home/marshall/html/module/Application/config/../view/error/index.phtml"
}
["template_path_stack"]=>
array(1) {
[0]=>
string(53) "/home/marshall/html/module/Application/config/../view"
}
}
}
答案 0 :(得分:1)
如果您从ZendSkeletonApplication开始,是否已从应用程序模块的配置中删除了pre-defined 'application' route?我可以在最新的ZendSkeletonApplication中复制它的唯一方法是在已经定义的路由之前定义应用程序路由。
例如,module.config.php中的这个路由部分适用于我:
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
),
'application' => array(
'type' => 'segment',
'options' => array(
'route' => '/application[/:action][/]',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
),
),
)
使用它,它可以工作:
<?= $this->url('application', array('action' => 'validate')) ?>
// Produces /application/validate/