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でも取れるとか気になりますが、見通しがよくなるようにまとめてみました。
コメントを残す