Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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 Phalcon资产管理正在为同一文件创建2个请求_Php_Css_Assets_Phalcon - Fatal编程技术网

Php Phalcon资产管理正在为同一文件创建2个请求

Php Phalcon资产管理正在为同一文件创建2个请求,php,css,assets,phalcon,Php,Css,Assets,Phalcon,我有以下代码: $this->assets ->collection('header') ->setTargetPath('css/final.css') ->setTargetUri('css/final.css') ->addCss('css/base/base.css') // Use the built-in Cssmin filter ->

我有以下代码:

        $this->assets
        ->collection('header')
        ->setTargetPath('css/final.css')
        ->setTargetUri('css/final.css')
        ->addCss('css/base/base.css')
        // Use the built-in Cssmin filter
        ->addFilter(new \Phalcon\Assets\Filters\Cssmin);
发生的情况是,当请求页面时,有两个相同的请求指向相同的final.css文件,但是html源代码只有一个指向css文件的链接


如果您能提供任何帮助,我们将不胜感激。

如果在“发送前”之后发送转发,则会发生这种情况;基本控制器将初始化两次。如果您查看控制器是否已初始化,则将编译您的资产。如果您随后转发到另一个控制器,该控制器将被初始化,您的资产将再次编译

我使用了两种解决方案:在资产上放置一个isInitialized标志并将其作为路由参数传递给forward,以防止其再次初始化,或者将资产编译移动到dependencyInjector上的服务。我认为phalcon的文档并没有真正明确说明,如果您遵循baseController示例,每次都会编译您的资产。我们大多数人都将asset manager用作静态的“全部编译”,其中baseController方法允许动态包含资产——这似乎是个好主意,但通常只需缩小所有资源一次并将其作为静态文件发送即可,在这种情况下,baseController中的资产会增加开销。

您可以检查(!$this->dispatcher->wasForwarded()){/*创建集合*/}