在我的项目中,我有数据库
- "产品"有很多"尺寸"
- "产品大小"归属于"产品"
- "ProductSize"属于"Size"
在ProductsSize中,一个product_id可能有多个size_id。
因此,我想创建一个具有select类型输入的表单,该表单列出了所有size_id,其中product_id=$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)); ?>
然后我得到错误:未定义的索引:产品大小
但当我放foreach时,数据显示:
<?php foreach ($size_apparel as $size): ?>
<?php echo $size['ProductsSize']['size_id'];?><br/>
<?php endforeach; ?>
有人能帮我做选项中的foreach吗。
问题是您使用的选项数组无效。您正在请求:
$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},
...
)
我想你是说
<?php echo $this->form->input('size_id', array('label' => 'Size', 'options' => $size)); ?>
注意"options"而不是"value"
$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),
));
希望它能为你工作