如果这是一个基本问题,我很抱歉,但我试图在ZF2文档中找到答案,但找不到明确的答案。
我有一组控制器,每个控制器都包含一组操作。我希望每个操作都检查请求中是否存在某个参数。最好的办法是确保所有操作都能做到这一点,这样如果我添加一个新操作,它也会自动得到满足?
非常感谢你的帮助。
您可以扩展AbstractActionController,并根据需要添加自定义方法或覆盖现有方法。
use Zend'Mvc'Controller'AbstractActionController;
abstract class AbstractCustomController extends AbstractActionController
{
//custom methods
}
完成后,您只需通过名称空间访问自定义控制器,并使用新的控制器对其进行扩展。
<?php
namespace Custom'Controller;
use Zend'View'Model'ViewModel;
use Custom'Controller'AbstractCustomController;
class NewController extends AbstractUserController {
//new controller which has access to methods from extented AbstractController
}
您没有具体说明要检查的内容。但是使用MVC事件可能更干净、更容易实现。您只需在module.php
中添加一些功能,例如:
public function onBootstrap(MvcEvent $e) {
//check request
}
这只是一个例子,可能不起作用。根据事件的顺序,此时可能无法填写请求,您将被迫使用另一个请求。
我曾经将AbstractActionController
提供的onDispatch('Zend'Mvc'MvcEvent $e)
用于一个与您的任务有点相似的任务。但话说回来,如果你能更具体一点,我们可能会给你一个更具体的答案。
致以最良好的问候和好运!
编辑:关于你在评论中的问题,你可以收听路由事件并让你的参数在那里。
//Module.php within your onBootstrap Method
$application = $e->getApplication();
$eventManager = $application->getEventManager();
$eventManager->attach('route', function(MvcEvent $mvcEvent) {
$params = $mvcEvent->getRouteMatch()->getParams();
echo '<pre>'; print_r($params); exit;
}