CakePHP多选“选中”不起作用

时间:2012-04-20 09:27:23

标签: cakephp-1.3

我的编辑表单中有多个选择输入: -

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array($selected))); ?>

当回显时, $selected 变量将如下所示: -

"MySQL", "PHP"

但是,输入不会自动选择与标记匹配的选项。

但是,当我手动输入所选的选项时,它会自动选择那两个选项; e.g。

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array("MySQL", "PHP"))); ?>

有没有解决这个问题?感谢。

5 个答案:

答案 0 :(得分:16)

是啊,我把这个修好了。

我看错了方向。我假设所选的值应该是字符串形式,引号和逗号分隔。 (例如“MySQL”,“PHP”,“jQuery”)。

相反,它应该是数组格式,没有任何引号和逗号。 e.g。

Array
(
    [0] => MySQL
    [1] => PHP
    [2] => jQuery
)

一旦我将数组整理出来,我将其传递给视图;例如$ this-&gt; set('selected',$ myArray);

然后在表格上,我只需要像这样回应: -

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => $selected)); ?>

答案 1 :(得分:3)

使用默认关键字:

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','default' => $selected));?>

答案 2 :(得分:1)

无需选择属性

例如:

控制器中的

$this->request->data = $this->Article->read(null, $id);

$this->set(array(
        'centers' => $this->Center->find('list'),
        'shopCategories' => $this->ShopCategory->find('list'),
        'brands' => $this->Brand->find('list')
    ));

在视图中:

echo $this->Form->input('Center', array('multiple' => 'multiple')); 

就是这样!

答案 3 :(得分:1)

  

CakePHP 3.x 版本中,您可以将value设置为从列表中预先选择

echo $this->Form->select(
    'Article.tags',
    ['PHP','MySQL','jQuery','AJAX'],
    [
        'multiple' => true,
        'value' => ['MySQL','AJAX']
    ]
);

值为MySQLAJAX的HTML元素将呈现为预选

答案 4 :(得分:0)

cake php完全基于命名约定和数组格式化。

尝试这样做: -

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','selected' => $selected));?>