この記事は、 CakePHP Advent Calendar 2019 3日目の記事です、が、6日に公開しました。
PhpStorm Live Template?
公式にヘルプがあるよ。
CakePHPのビューテンプレートを書くのをちょっと楽にする
CakePHPのテンプレートは素のPHPです。こんな感じですね。
<h1 class="post-title"><?= h($post->title) ?></h1>
<div class="post-content">
<?= nl2br(h($post->body)) ?>
</div>
<?php if ($post->tags) : ?>
<ul class="post-tags">
<?php foreach ($post->tags as $tag) : ?>
<li><?= h($tag->name) ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
テンプレートを書くとき、 <?=
やら、 <?php if
やら <?php foreach
をよく書いていると思います。
毎回毎回、これを書くのだるいですよね。閉じタグまで含めると特に。
そんなときは、PhpStormのLive Templatesを使って楽をしましょう。
ライブテンプレートを追加する
Preferences
> Editor
> Live Templates
でライブテンプレートを追加します。
追加の仕方はヘルプを読んでね。
ポイントはHTMLコンテキストでの適用にすること。ダイアログの下の方のここをクリックして設定するんだ。
<?=
pe<tabキー>
で、 <?=
になるように設定するよ。
Abbreviation: pe
Description: php short echo
(これは説明文なので適当でいい
Template text:
<?= $END$ ?>
$END$
は、変換後にキャレットがその位置に移動するんだ。
<?php if () : ?><?php endif; ?>
pif<tabキー>
で、 ifブロックを生成できるようにするよ。
Abbreviation: pif
Description: php if
(これは説明文なので適当でいい
Template text:
<?php if ($CONDITIONS$) : ?>
$END$
<?php endif; ?>
<?php foreach () : ?><?php endforeach; ?>
pfore<tabキー>
で、foreachブロックを生成できるようにするよ。
これは、ライブテンプレートのPHP
の中に、fore
, forek
があるからそれをコピーして作成するといいよ。
キーなし
Abbreviation: pfore
Description: php foreach(iterable_expr as $value) {...}
(これは説明文なので適当でいい
Template text:
<?php foreach ($ITERABLE$ as $VAR_VALUE$) : ?>
$END$
<?php endforeach; ?>
キーあり
Abbreviation: pforek
Description: php foreach(iterable_expr as $key => $value) {...}
(これは説明文なので適当でいい
Template text:
<?php foreach ($ITERABLE$ as $VAR_KEY$ => $VAR_VALUE$) : ?>
$END$
<?php endforeach; ?>
おまけ
PhpStorm 2019.3 で、<?
って入力すると <?php
に展開するようになったけど、<?=
を入力したいときにとても困る。
無効にするオプションは検討されているみたいだけど、実装されるまでの間は次のLive Templateを設定しておくといいかも。
Abbreviation: <?php=
Description: php short echo open
(これは説明文なので適当でいい
Template text:
<?= $END$ ?>
コンテキストはPHPで。
まとめ
CakePHP あんまり関係なかった。