Cakephp foreach数据选择(表单)中的选项

时间:2013-12-16 01:50:40

标签: cakephp select foreach options

在我的项目中我有数据库

  • “Products”hasAndBelongsToMany“Sizes”
  • “ProductsSize”属于“产品”
  • “ProductSize”所属于“尺寸”

在ProductsSize中,一个product_id可能有许多size_id。

因此,我想做一个具有select类型输入的表单,该表单列出了product_id = $ id的所有size_id。

我所做的是:

控制器中的

$size = $this->Product->ProductsSize->find('all', array(
    'conditions' => array('ProductsSize.product_id' => $id), 
    'fields' => array('ProductsSize.size_id'),
));

在视图中:

<?php echo $this->form->create('Cart', array('action' => 'add')); ?>
<?php echo $this->form->input('size_id', array('label' => 'Size', 'options' => $size)); ?>

然后我收到错误:未定义的索引:ProductsSize

但是当我把foreach,显示的数据:

<?php foreach ($size_apparel as $size): ?>
<?php echo $size['ProductsSize']['size_id'];?><br/>
<?php endforeach; ?>

任何人都可以帮助我做一些选择。

3 个答案:

答案 0 :(得分:1)

问题是您为选项使用了无效数组。您正在申请:

$size = $this->Product->ProductsSize->find('all', array(
    'conditions' => array('ProductsSize.product_id' => $id), 
    'fields' => array('ProductsSize.size_id'),
));

您应该要求的是:

$size = $this->Product->ProductsSize->find('list', array(
    'conditions' => array('ProductsSize.product_id' => $id),
));

这将以预期的格式返回表单字段的选项:

array(
  {id} => {size},
  {id} => {size},
  {id} => {size},
  {id} => {size},
   ...
)

答案 1 :(得分:0)

我想你想说

<?php echo $this->form->input('size_id', array('label' => 'Size', 'options' => $size)); ?>

注意'选项'而不是'价值'

答案 2 :(得分:0)

$ List = Set :: classicExtract($ size,'{n} .ProductSize.product_id');

$ List将包含键值(ProductSize.product_id)对。

或者您可以将查询更改为

$size = $this->Product->ProductSize->find('list', array(
    'conditions' => array('ProductSize.product_id' => $id),
));

希望它对您有用