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



在我的项目中,我有数据库

  • "产品"有很多"尺寸"
  • "产品大小"归属于"产品"
  • "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),
));

希望它能为你工作

最新更新