在我的项目中我有数据库
在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; ?>
任何人都可以帮助我做一些选择。
答案 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),
));
希望它对您有用