我的想法是这样的。我在这样的模型中创建了一个函数。
public function status($id = null)
{
$conditions = array('Transaction.catalogue_id' => $id);
$status = $this->find('first',array('conditions' => $conditions, 'fields' => array('Transaction.status'),'order' => array('Transaction.id' => 'desc'))
);
return $status['Transaction']['status'];
}
我如何从此循环中发送$ id的值?
<table cellspacing="0" cellpadding="0" border="0" class="all">
<thead>
<tr>
<th>No</th>
<th>Title</th>
<th>Author</th>
<th>ISBN</th>
<th>Location</th>
<th>Availability</th>
</tr>
</thead>
<?php $count = 1;?>
<tbody>
<?php foreach ($Catalogue as $Catalogue): ?>
<tr>
<td><?php echo $count++; ?></td>
<td><?php echo $this->Html->link($Catalogue['Catalogue']['title'],array('controller' => 'transactions', 'action' => 'view',$Catalogue['Catalogue']['id']),array('escape' => false, 'class' => 'ajax')); ?></td>
<td><?php echo $Catalogue['Catalogue']['author']; ?></td>
<td><?php echo $Catalogue['Catalogue']['isbn']; ?></td>
<td><?php echo $Catalogue['Location']['rack']; ?></td>
<td><?php echo $this->getstatus($Catalogue['Catalogue']['id'])</td>
</tr>
<?php endforeach; ?>
</tbody>
<?php unset($Catalogue); ?>
</table>
我们可以做$ this-&gt; getstatus($ Catalog ['Catalog'] ['id'])?
答案 0 :(得分:0)
误解了这个问题道歉: 是的,您可以使用requestAction从视图页面访问功能(内部控制器) $这 - &GT; requestAction('controllerName / actionName /'.$参数);
所以在你的情况下:
$this->requestAction('status/' .$Catalogue['Catalogue']['id']);
==========================================
我会留下我原来的(错误的)答案,因为它在某些方面有用:)
您需要在控制器中设置值,以便在视图页面上调用它。
$this->set('status', $status);
然后在您的视图页面上,您可以使用 echo $ status
虽然您在示例中不需要它,但您也可以使用CakePHP的copmact函数,允许您创建多个变量。 $这 - &gt;设置(紧凑( 'VAR1', 'VAR2', 'VAR5')); 将全部视为:
echo $var1.$var2.$var3;
答案 1 :(得分:0)
您应该在CakePHP中使用Model来定义Catalog和Transaction之间的关系。虽然您尝试的是可能的,但它需要的努力比它需要的多得多。一两行代码(假设您正确地键入了表格)和Cake将为您完成剩下的工作。很整洁,是吗?是。
在Catalogue.php模型文件中,使用Transaction定义hasOne关系。使用ORDER获取最新记录......
class Catalogue extends AppModel {
public $name = 'Catalogue';
public $hasOne = array(
'Transaction' => array(
'className' => 'Transaction'
'order' => 'Transaction.id DESC'
)
);
}
然后在您看来,而不是
<td><?php echo $Catalogue['Catalogue']['id'];?></td>
只是做
<td><?php echo $Catalogue['Transaction']['status'];?></td>
您可以在manual here中了解有关CakePHP中关系的更多信息。
答案 2 :(得分:0)
您可以将模型作为变量传递给视图,如下所示:
public function action() {
...
$this->set('Catalogue', $this->Catalogue);
}
然后在您看来,您可以这样做:
<td><?php echo $Catalogue->getstatus($catalogue['Catalogue']['id'])?></td>
但你应该在模特身上做这件事。试图获取整个项目列表及其状态。