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タグが付いた本が表示される。
これで、ブックマークチュートリアルは終了。
コメント