CakePHP 多选“选中”不起作用
Posted
技术标签:
【中文标题】CakePHP 多选“选中”不起作用【英文标题】:CakePHP multiple select "selected" is not working 【发布时间】:2012-05-01 21:07:27 【问题描述】:我的编辑表单中有一个多选输入:-
<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array($selected))); ?>
回显后,$selected
变量将如下所示:-
"mysql", "PHP"
但是,输入不会自动选择与标签匹配的选项。
但是,当我手动输入选择的选项时,它会自动选择这两个选项;例如
<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array("MySQL", "PHP"))); ?>
有没有办法解决这个问题?谢谢。
【问题讨论】:
【参考方案1】:啊,我解决了这个问题。
我看错了方向。我假设选择的值应该是字符串形式,引号和逗号分隔。 (例如“MySQL”、“PHP”、“jQuery”)。
相反,它应该是数组格式,没有任何引号和逗号。例如
Array
(
[0] => MySQL
[1] => PHP
[2] => jQuery
)
整理好数组后,我将其传递给视图;例如$this->set('selected', $myArray);
然后在表格上,我只需要像这样回应它:-
<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => $selected)); ?>
【讨论】:
【参考方案2】:使用默认关键字:
<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','default' => $selected));?>
【讨论】:
【参考方案3】:在CakePHP 3.x版本中,可以设置
value
从列表中预选
echo $this->Form->select(
'Article.tags',
['PHP','MySQL','jQuery','AJAX'],
[
'multiple' => true,
'value' => ['MySQL','AJAX']
]
);
值为MySQL
和AJAX
的html 元素将呈现为预选
【讨论】:
【参考方案4】:不需要做选择属性
例如:
在控制器中:
$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'));
就是这样!
【讨论】:
【参考方案5】:cake php 完全基于命名约定和数组格式..
尝试这样做:-
<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','selected' => $selected));?>
【讨论】:
以上是关于CakePHP 多选“选中”不起作用的主要内容,如果未能解决你的问题,请参考以下文章