CakePHPのビューテンプレート編集を爆速ちょっと楽にする PhpStorm Live Templates

標準

この記事は、 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 あんまり関係なかった。

コメントを残す

Page optimized by WP Minify WordPress Plugin