javascript - 向 CakePHP 中的每个 View 添加页面特定的 Javascript

标签 javascript cakephp

为了保持我的脚本的可维护性,我将把每个脚本移到它们自己的文件中,按 Controller 和操作组织:

// scripts which only apply to /views/posts/add.ctp
/app/webroot/js/page/posts/add.js

// scripts which only apply to /view/users/index.ctp
/app/webroot/js/page/users/index.js

这很酷,但是我希望 Controller 自动添加这些,因为它显然知道 Controller 和操作的名称。

我认为最好的地方是 AppController::beforeRender()。 (是吗?)

唯一的问题是我不知道如何将它实际添加到 $scripts_for_layout 变量中。我认为获取对 javascript 帮助程序对象的引用会起作用,但我无法从 Controller 中找到它!

class AppController extends Controller {
    var $helpers = array("javascript", "html", "form");

    function beforeRender() {
        // ???
    }
}

最佳答案

在您的 default.ctp 布局文件中很容易做到:

每个 Controller 和/或 Controller / Action 自动包含 .css 文件的示例(因为我有这个,很容易适应 .js 文件):

<head>
...
<?php
    if (is_file(WWW_ROOT . 'css' . DS . $this->params['controller'] . '.css')) {
        echo $html->css($this->params['controller']);
    }
    if (is_file(WWW_ROOT . 'css' . DS . $this->params['controller'] . DS . $this->params['action'] . '.css')) {
        echo $html->css($this->params['controller'] . '/' . $this->params['action']);
    }
?>
...
</head>

关于javascript - 向 CakePHP 中的每个 View 添加页面特定的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425084/

相关文章:

javascript - 如何将多个电子邮件 ID 添加到文本字段(如 Facebook 隐私设置)并将电子邮件 ID 列表转换为逗号分隔列表?

javascript - 更新 jQuery 以与小部件一起使用

javascript - 从 javascript 内部抛出异常

php - CakePHP 资源/备忘单?

php - CakePHP 4 - 保存关联数据不适用于 3 个简单表格

php - undefined variable : $_SESSION

php - 如何在 cakephp 中获取 $_SESSION 值

javascript - vuetify v-bind 内联样式值不更新

javascript - 使用js从多维数组中提取值

CakePHP - 保存失败;验证错误为空