select(form)中选项的Cakephp foreach数据

gt0wga4j  于 2022-11-24  发布在  PHP
关注(0)|答案(3)|浏览(162)

在我项目中,我有数据库

  • “产品”有多种“尺寸”
  • “产品尺寸”属于“产品”
  • “产品尺寸”属于“尺寸”

在ProductsSize中,一个product_id可以有多个size_id。
因此,我想做一个表单,它有一个选择类型输入,列出所有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; ?>

有人能帮我做期权的预测吗?

clj7thdc

clj7thdc1#

问题是您使用的选项数组无效。您要求:

$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},
   ...
)
dojqjjoe

dojqjjoe2#

我想你是想说

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

注意用“选项”代替“值”

y1aodyip

y1aodyip3#

如果您有一个文件夹,那么您可以使用它来创建一个文件夹。
$List将包含关键字值(ProductSize.product_id)对。
或者,您可以将查询更改为

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

希望对你有用

相关问题