ケーキPHP 2.3
私のアイテムコントローラーのインデックスアクションでは、アイテムを表示するための単純なループがあります:
<?php foreach ($items as $item): ?>
<tr>
<td><?php
echo $item['Item']['id'];
if($this->Session->check('validated')){
echo $this->Html->image('/img/action_delete.png',array(
'url'=>array('controller' => 'items','action'=>'markdelete',$item['Item']['id'])
));
echo $this->Html->image('/img/action_edit.png',array(
'url'=>array('controller' => 'items','action'=>'edit',$item['Item']['id'])
));
}
?>
</td>
<td><?php
echo $this->Html->link($item['Item']['item_category'], array('controller' => 'items','action'=>'index',$item['Item']['item_category']));
?>
</td>
<td>
<?php
echo $this->Html->link($item['Item']['item_title'], array('controller' => 'items', 'action' => 'view', $item['Item']['id']));
?>
</td>
<td><?php
if($item['Item']['item_photo_url'] != '') {
echo $this->Html->link('Link','/img/'.$item['Item']['item_photo_url'],array('target'=>'_blank'));
} else {
echo '---';
}
?></td>
<td><?php echo $item['Item']['item_description']; ?></td>
<td><?php echo $item['Item']['item_price']; ?></td>
</tr>
<?php endforeach; ?>
ただし、ページの上部に、Items テーブルの item_category フィールドのリンク メニューを表示するセクションを作成する必要があります。
item_category フィールドは、Items テーブルの単純な varchar フィールドです。それらを区別してリンクとして出力するのが好きです。
どうすればいいですか?ヘルパーを作成してビューに含める必要がありますか? もしそうなら、ヘルパーはどのように見えるべきですか?
ヘルパーでモデルを使用して MVC ロジックを壊すことは理解していますが、他にどのような方法がありますか?
追加した:
私はちょうど要素を通してそれをやろうとしましたが、それはうまくいきますが、それは適切な方法ですか?
要素ソース:
<?php
$cat = $this->requestAction('/items/categories');
echo __('Κατηγορίες: ');
foreach ($cat as $category) {
echo $this->Html->link($category['Item']['item_category'], array('controller' => 'items','action'=>'index',$category['Item']['item_category'])). ' | ';
}
echo $this->Html->link('Ολες', array('controller' => 'items','action'=>'index'));
?>
コントローラーのアクション:
public function Categories() {
$categories = $this->Item->find('all',array(
'fields' => array('DISTINCT item_category'),
'order' => array('item_category')
));
return $categories;
}
リクエストの概要:
フィールドitem_categoryを持つテーブルitemsがあるとしましょう。このフィールドは varchar であり、別のテーブルの主キーではありません。
また、テーブルからすべてのアイテムをリストするアイテムコントローラーにインデックスアクションがあります。
私が必要としているのは、item_category フィールドで個別の選択を行い、それをページのヘッダーに配置することです。