我使用Zendframework(2.3),在尝试在现有控制器上创建新操作和查看时,我很难理解我做错了什么。我已经阅读了一些相关的documentation,但仍然看不到我错过的内容。
目前控制器基本上默认为单个动作(主要),我想再添加一个。
EG:
/list-item/main
=> //现有路线
/list-item/add
=> //我想补充的新路线。
这就是我的module.config.php
看起来的样子:
return array(
'router' => array(
'routes' => array(
'list-item' => array(
'type' => 'segment',
'options' => array(
'route' => '/list-item[/:action][/:id][/:id1][/:id2][/:id3][/:id4][/:id5]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*'
),
'defaults' => array(
'controller' => 'ListItem',
'action' => 'main',
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'ListItem' => 'ListItem\Controller\ListItemController',
),
),
'view_manager' => array(
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
);
如果我能正确读取此配置,实际操作名称是可选的,但模块将默认为主操作。然而,允许尝试任何行动都是灵活的。
所以,我继续在ListItemController中添加一个新的公共函数,假设这是约定的工作方式:
public function addAction() {
return new ViewModel();
}
在模块的观看文件夹中添加了一个新的视图文件,实际上就在main.phtml
旁边但名为add.phtml
。
但是当我尝试访问路线/list-item/add
时,我只获得permission denied
。有趣,因为实际状态是200.但我没有其他信息。老实说,我甚至不知道这是否是ZF的事情,我只能假设。
另外,如果网络服务器可能有事情要做,我会使用php -S 0.0.0.0:8080 -t public/
。
提前致谢,我们将非常感谢任何帮助。