12

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

<?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"))); ?>

有没有什么办法解决这一问题?谢谢。

4

5 回答 5

16

啊,我解决了这个问题。

我看错了方向。我假设选择的值应该是字符串形式,用引号和逗号分隔。(例如“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)); ?>
于 2012-04-21T02:11:29.637 回答
4

使用默认关键字:

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','default' => $selected));?>
于 2013-08-07T06:51:00.453 回答
2

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

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

具有值的 HTML 元素,MySQLAJAX呈现为预选

于 2017-10-23T04:32:52.933 回答
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')); 

就这样!

于 2013-12-27T14:30:00.157 回答
0

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

尝试这样做: -

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','selected' => $selected));?>
于 2012-04-20T09:36:01.577 回答