デザイン変更でCakephpのViewファイルを修正する際に、該当のHTML箇所がどのViewファイルの内容なのか少し特定しづらいことがあります。
それが一つのViewで完結しているならまだしも多数のElementを使用しているとなおさらですね。
idやclassで検索するのもめんどくさい。。もう検索しなくてもぱっと特定出来るようにしたい。
そこでローカル環境に限ってHTML上にどのViewファイルの内容なのかコメントを出力するHelperメソッドを作成しました。
具体的なHelperメソッドの処理を以下に記載します。
/**
* View開始のHTMLコメント
*/
function viewStartComment()
{
return $this->viewComment();
}
/**
* View終了のHTMLコメント
*/
function viewEndComment()
{
return $this->viewComment(true);
}
/**
* ViewのHTMLコメント出力共通処理
*/
private function viewComment($viewEnd = false)
{
if (env("CAKE_ENV") !== "local"])) {
return "";
}
$debugBackTrace = debug_backtrace();
$viewPath = $debugBackTrace[1]["file"];
$status = $viewEnd ? "END" : "START";
return "<!-- {$status} {$viewPath} -->";
}
やっていることはphpのdebug_backtraceメソッドを使用して、呼び出し元のViewファイルパスをHTMLコメントとして出力します。
※ちなみに$debugBackTrace[1]["file"]
としている理由は、$debugBackTrace[0]["file"]
だとviewCommentメソッドを呼んだviewStartComment/viewEndCommentメソッドの情報になりHelperのファイルパスが取れてしまうからです。
あとはこれらのHelperメソッドをViewの最初と最後に呼ぶだけ。
<?= $this->Sample->viewStartComment()?>
<div>サンプルだよ</div>
<?= $this->Sample->viewEndComment()?>
すると出力されたHTMLでは・・
<!-- START /var/www/html/sample/app/View/Samples/index.ctp -->
<div>サンプルだよ</div>
<!-- END /var/www/html/sample/app/View/Samples/index.ctp -->
となります。
もしよければ参考にしてください。
またはもっと良い方法があればコメントでの共有お待ちしています