module/Applation/config/module.config.php
'router' => array(
'routes' => array(
'home' => array(
'type' => 'ZendMvcRouterHttpLiteral',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'ApplicationControllerIndex',
'action' => 'index',
),
),
),
'application' => array(
'type' => 'Segment',
'options' => array(
'route' => '/application[/:action][/]',
'defaults' => array(
'__NAMESPACE__' => 'ApplicationController',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
),
),
),
在我的IndexController.php中,我有一个indexAction((和validateAction((-(只是试验它们实际上没有函数(
我可以很好地欣赏风景。但我在观点中写道:
echo $this->url('application',array('action' => 'validate'));
它只是回声
/application/
我如何才能让它与动作呼应路径?我已经试过了我能想到的一切,但找不到任何合理的文件,也找不到其他有同样问题的人。
以下是配置的页面加载时的var_dump:
array(5) {
["router"]=>
array(1) {
["routes"]=>
array(2) {
["home"]=>
array(2) {
["type"]=>
string(28) "ZendMvcRouterHttpLiteral"
["options"]=>
array(2) {
["route"]=>
string(1) "/"
["defaults"]=>
array(2) {
["controller"]=>
string(28) "ApplicationControllerIndex"
["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) "ApplicationController"
["controller"]=>
string(5) "Index"
["action"]=>
string(5) "index"
}
}
}
}
}
["service_manager"]=>
array(1) {
["factories"]=>
array(1) {
["translator"]=>
string(45) "ZendI18nTranslatorTranslatorServiceFactory"
}
}
["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) {
["ApplicationControllerIndex"]=>
string(38) "ApplicationControllerIndexController"
}
}
["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"
}
}
}
如果您从ZendSkeletonApplication开始,您是否已从应用程序模块的配置中删除了预定义的"应用程序"路由?我在最新的ZendSkeletonApplication中复制这一点的唯一方法是在已经定义的路由之前定义应用程序路由。
例如,module.config.php中的路由部分适用于我:
'router' => array(
'routes' => array(
'home' => array(
'type' => 'ZendMvcRouterHttpLiteral',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'ApplicationControllerIndex',
'action' => 'index',
),
),
),
'application' => array(
'type' => 'segment',
'options' => array(
'route' => '/application[/:action][/]',
'defaults' => array(
'__NAMESPACE__' => 'ApplicationController',
'controller' => 'Index',
'action' => 'index',
),
),
),
),
)
使用这个,它工作:
<?= $this->url('application', array('action' => 'validate')) ?>
// Produces /application/validate/