CakePHP3のブックマークチュートリアルを触ってみる5 ビューの作成

CakePHP3のブックマークチュートリアルの続き。ビューの作成

チュートリアルのコードに従って、src/Template/Bookmarks/tags.ctpファイルを新規作成する。


<h1>
    Bookmarks tagged with
    <?= $this->Text->toList($tags) ?>
</h1>

<section>
<?php foreach ($bookmarks as $bookmark): ?>
    <article>
        <!-- Use the HtmlHelper to create a link -->
        <h4><?= $this->Html->link($bookmark->title, $bookmark->url) ?></h4>
        <small><?= h($bookmark->url) ?></small>

        <!-- Use the TextHelper to format text -->
        <?= $this->Text->autoParagraph($bookmark->description) ?>
    </article>
<?php endforeach; ?>
</section>

重要なことが書いてあった。
HTMLインジェクションを防ぐためにデータ出力時には、必ずhショートカット関数「h()」を使うこと。
ビューテンプレートのctpファイル名は、小文字でコントローラのアクション名を付けること。
コントローラのset()メソッドを用いて指定した変数は、ビューで利用可能。

http://localhost:8765/bookmarks/tagged/funnyにアクセスすると、以下のエラーが発生した。


Undefined variable: options [APP/Model\Table\BookmarksTable.php, line 105]

メッセージを見るに、APP/Model\Table\BookmarksTable.phpでoptionsが定義されていないらしい。
チュートリアルとソースコードを見直したら、手で打った部分が誤っていた。


public function findTagged(Query $query, array $options)
{
    // 間違いコード
    $bookmarks->innerJoinWith('Tags', function ($q) {
    // 正しいコード
    $bookmarks->innerJoinWith('Tags', function ($q) use ($options) {

コードを正しいコードに直してから、再度アクセスをするとfunnyタグが付いた本が表示される。
これで、ブックマークチュートリアルは終了。

コメント

タイトルとURLをコピーしました