私はテーブルを持っています.1つの行または複数の行を表示する必要はありません。
私の最初の試みでは、すべてを検索する ARRAY として変数を設定しましたが、明らかに 1 行または 0 行の場合、CakePHP は INVALID ARGUMENT SUPPLIED FOR FOREACH をスローします。ARRAY の結果を FIRST に設定することもできますが、複数の行がある場合、最初の行のみが表示されます。
誰か提案はありますか?
フィールドコントローラーの機能:
public function add($id){
//Set Title, Stylesheet, homelogo & layout
$this->set('title_for_layout', 'View Invoices');
$this->set('stylesheet_used', 'homestyle');
$this->set('image_used', 'eBOXLogoHome.png');
$this->layout='home_layout';
//Find all fields where template_id = template_id passed in
//ARRAY: to print foreach loop ONLY WORK >2 Row returned
$templatefields=$this->Field->find('all', array(
'conditions' => array(
'Field.template_id' => $id)));
//Find all fields where template_id = template_id passed in
//FIRST: to print echo variable ONLY WORK =1 Row returned
//$templatefields=$this->Field->find('first', array(
//'conditions' => array(
//'Field.template_id' => $id)));
//Set variables
$this->set('templatefields', $templatefields);
}
渡される $id は、フィールドが属するテンプレート ID です。
Fields/add.ctp の表示機能。
<?php
if (is_array($templatefields))
{
foreach ($templatefields as $templatefield)
{
<tr>
<td align='center'><?php echo $templatefields['Field']['name']; ?></td>
<td align='center'><?php echo $templatefields['Field']['description']; ?></td>
<td align='center'><?php echo $templatefields['Field']['default_value']; ?></td>
<td align='center'><?php echo $templatefields['Field']['template_id']; ?></td>
</tr>
}
}
else if (count($templatefields)==1)
{
....print? --> WOULD HAVE TO USE $templatefields where find('first')
....otherwise error=invalid argument supplied for foreach
}
else if (empty($templatefields))
{
....NULL
....OR "There are no fields to display"
}
?>