首页 > 解决方案 > CakePHP - 从控制器的 beforeRender 回调中将 JS 文件添加到“脚本”块

问题描述

是否可以在控制器 beforeRender() 中添加一个 js 文件来查看?可取吗?如果不是,并且我不能使用视图,我应该只使用事件系统吗?

基本上这个想法是让我创建的插件将 JS 文件注入主题插件的“脚本”块(单独的插件)

标签: cakephp

解决方案


经过更多尝试,我决定通过并使用事件系统。我是这样完成的:

<?php

namespace App\Event;

use Cake\Event\EventListenerInterface;    

class ApplicationListener implements EventListenerInterface {

    public function implementedEvents() {
        return [
            'View.beforeLayout' => 'injectJsFile'
        ];
    }

    public function injectJsFile(Event $event, $layoutFile){
      $event->getSubject()->Html->script('myscript', ['block' => 'script']);
    }

}

这对我有用,但如果有控制器方式或更好的事件系统方式,我很想听听。


推荐阅读