我已经使用ZF1开发了,现在我正在使用ZF2。我按照教程时已经使用了Album应用程序,一切正常。现在我想知道如何在Album模块中添加新的控制器。
我创建了一个新的空控制器Named TestController及其视图。为了测试它,我更改了module.config.php,默认使用新的TestController,它可以工作。之后我再次更改为默认的相册控制器,就像在教程中一样。 好吧..问题出现在添加视图中,从相册中我改变了这一行
<a href="<?php echo $this->url('test', array('action'=>'index'));?>">Test</a>
我在浏览器中点击了www.testing.loc / add,但只渲染了一半的脚本而没有任何错误。
Album模块中的一些模块配置如下所示:
<?php
return array(
'controllers' => array(
'invokables' => array(
'Album\Controller\Album' => 'Album\Controller\AlbumController',
'Album\Controller\Test' => 'Album\Controller\TestController',
),
),
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Album\Controller\Album',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);
对于url函数的视图中提供的参数可能是一个简单的错误,但我与其他人证明了它是相同的。我从ZF2开始,但我无法弄清楚如何在同一模块中使用多个控制器。任何建议都是非常受欢迎的。
答案 0 :(得分:4)
配置中没有名为test
的路由。语法是:
$this->url('ROUTENAME', $routeParams);
基本上你需要做的就是改变路线:
'router' => array(
'routes' => array(
'test' => array(
//copy the other parts
)
)
)
有关详细信息,请参阅Zend\Mvc\Router - 文档