繰り返しの中で変数を展開し動的にリンクを生成する

Phalconのviewでlinkを出力する

Voltテンプレートの場合

forやforeachの中で変数を展開してリンクを出力したい場合PhalconPHPではどのような方法があるのだろうか。

Phalcon謹製のVoltテンプレートの場合は以下の方法でリンクを出力することができる。以下のコードは、Controllerから渡されたpostsを繰り返し処理して、それぞれのデータを展開している。

{% for e in posts %}
<tr>
    <td>{{ e.id }}</td>
    <td>{{ e.title }}</td>
    <td>{{ e.created }}</td>
</tr>
{% endfor %}

titleの項目をリンクテキストにしたのが下のコードになる。

{% for e in posts %}
<tr>
    <td>{{ e.id }}</td>
    <td>{{ link_to('view/'~e.id, e.title) }}</td>
    <td>{{ e.created }}</td>
</tr>
{% endfor %}

文字列と変数の連結に[~]を利用して繰り返し処理内で動的なリンクを出力することが可能。aタグにclass属性などを追加するには以下のようにする。

<td>{{ link_to('view/'~e.id, e.title, 'class':'view-link') }}</td>

純粋なPHPで繰り返し処理を行いリンクを生成

Voltテンプレートを利用せずに繰り返し処理とリンクの出力を行ったのが下のコードになる。

<?php foreach ($posts as $e): ?>
<tr>
    <td><?= $e->id?></td>
    <td><?= $this->tag->linkTo(array('view/'.$e->id, $e->title, 'class' => 'view-link')) ?></td>
    <td><?= $e->created?></td>
</tr>
<?php endforeach; ?>

Phalconのhtmlヘルパー

$this->tag->linkTo(array());

を利用してリンクを出力することができる。

PhalconにもHTMLヘルパーが用意されているようだ。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

繰り返しの中で変数を展開し動的にリンクを生成するの記事にコメントを投稿