【问题标题】:CakePHP multiple select "selected" is not workingCakePHP 多选“选中”不起作用
【发布时间】:2023-03-11 22:18:01
【问题描述】:

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

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

有没有办法解决这个问题?谢谢。

【问题讨论】:

    标签: cakephp-1.3


    【解决方案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']
            ]
        );
        

        值为MySQLAJAX 的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));?>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-07-12
              • 2012-03-16
              • 2013-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多