如何在Zend Framework 2中的第三方模块的控制器中添加操作

时间:2015-05-31 18:33:44

标签: php zend-framework2

我正在使用ZfcUser模块。我见过wiki和here我已经找到了如何覆盖ZfcUser控制器中现有动作的视图。我的问题是,如何为例如添加其他操作changeDisplayPictureAction()

我使用的方法是创建自定义模块,以这种方式配置module.config.php

return array(
    'controllers' => array(
        'invokables' => array(
            'zfcuser' => 'MyNamespace\Controller\UserController',
        ),
    ),
);

我还使用UserController扩展ZfcUser\Controller\UserController,但因为我在其中创建了新操作以及新视图。无法将父类操作指向它们在父模块中已有的视图。换句话说,我必须复制存在子类或最终类的模块中的所有视图。否则我收到此错误消息

Zend\View\Renderer\PhpRenderer::render: Unable to render template "my-user/profile/index"; resolver could not resolve to a file

我想要做的就是在第三方模块中添加一些新动作,而不会打扰它们,但要扩展它们。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您不打算更改现有功能,为什么要扩展它?只需创建一个新的Controller并正确配置您的路由,以便将新操作分配给新控制器,并让现有控制器处理现有操作。

return array( 'controllers' => array( 'invokables' => array( 'myuser' => 'MyNamespace\Controller\UserController, ), ), 'router' => array( 'routes' => array( 'myuser' => array( 'type' => 'Literal', 'options' => array( 'route' => '/user/change-display-picture', 'defaults' => array( 'controller' => 'myuser', 'action' => 'change-display-picture', ), ), ), ), ), );