CakePHP3で定数とかを設定してJSでも使いまわしたりCSSで利用したりしてみる。

Cakephpで作っていて、いろいろController/ActionでCSSやJavascriptをうまく使えないかと思って、定数 > JS/HTMLのClass名へ落とし込んでみました。(なにかもっとスマートにできそうな気もします。)

まずAppController.phpで。Routerをuse

use CakeRoutingRouter;

config以下とか、どこかでやったほうが良いとか有りますが、
action,controller名なども加えてまとめたくこの場所。

public function initialize()
{
    parent::initialize();
    $this->loadComponent('RequestHandler');
    $this->loadComponent('Flash');

    define('FULL_BASE_URL',Router::fullBaseUrl());
    define('CONTROLLER_NAME',strtolower($this->name));
    define('ACTION_NAME',strtolower($this->request->action));

で、HTML側
JavaScriptの定数用してと、bodyクラスにconntroller-action名を割当

    <script>
        var FULL_BASE_URL = '<?= h(FULL_BASE_URL) ?>';
        var CONTROLLER_NAME = '<?= h(CONTROLLER_NAME) ?>';
        var ACTION_NAME = '<?= h(ACTION_NAME) ?>';
    </script>
</head>
<body class="<?= h(CONTROLLER_NAME.'-'.ACTION_NAME) ?>">

full_base_urlは jsでも取れるとか気になりますが、見通しがよくなるようにまとめてみました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です