Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php zend调度循环问题_Php_Zend Framework_View_Dispatch - Fatal编程技术网

Php zend调度循环问题

Php zend调度循环问题,php,zend-framework,view,dispatch,Php,Zend Framework,View,Dispatch,我正在使用Zend框架构建一个网站,我在调度循环方面遇到了一些问题 通常情况下,Zend Framework URL的构建方式为: 在我的网站上,我使用自定义的动态URL,这些URL通过自定义方法在分派循环中解析。因此,这些URL中的每一个在被解析后都将执行特定控制器和模块的特定操作 我需要执行一些任务,这些任务取决于解析的模块、控制器和操作。问题是我只能在dispatchLoopShutdown发生时知道解析的模块、控制器和操作。我需要执行的任务将设置一些cookie,这些cookie将对发送

我正在使用Zend框架构建一个网站,我在调度循环方面遇到了一些问题

通常情况下,Zend Framework URL的构建方式为:

在我的网站上,我使用自定义的动态URL,这些URL通过自定义方法在分派循环中解析。因此,这些URL中的每一个在被解析后都将执行特定控制器和模块的特定操作

我需要执行一些任务,这些任务取决于解析的模块、控制器和操作。问题是我只能在dispatchLoopShutdown发生时知道解析的模块、控制器和操作。我需要执行的任务将设置一些cookie,这些cookie将对发送到浏览器的输出进行更改

但是,此时视图已经呈现,并且在dispatchLoopShutdown发生时设置的cookie不会相应地更改输出

所以,我的问题是。。。有没有办法强制重新渲染视图?或者在dispatchLoopShutdown之前了解将执行哪些模块、控制器和操作的方法?我也尝试在postDispatch上完成这一点,但结果是一样的

希望我能正确地解释我的问题


谢谢您的帮助。

这里有一个关于Zend框架序列的好模式

通过使用控制器插件,您可以在调度前了解模块、控制器和操作:

<?php
class Custom_Controller_Plugin_CheckRoute extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch($request)
    {
        //Get Request
        $controller = $request->controller;
        $action     = $request->action;
        $module     = $request->module; 

        //=> perform actions before dispatch

        //Update the Request
        $request->setModuleName('default')
            ->setControllerName('index')
            ->setActionName('action2');
    }
}
?>


我也有同样的问题。它由Zend_控制器_插件_操作堆栈解决。我添加了一些操作,其中实现了dispatchLoopShutdown的逻辑。这个链接可能是有用的:

你可能想考虑使用控制器路由器,我需要设置一些规则来匹配请求的URL。我必须创建一个“捕获所有”规则并解析它们…在dispatchLoopShutdown之前,执行postDispatch。你是否考虑过使用一个控制器插件来执行一个单独的动作(即在插件中编写邮政调度方法)?我试着写POST调度方法,但是它每循环一次执行我的任务一次。我只需要在最后一次迭代中执行任务,在那里我知道最终解析的操作是什么。