【问题标题】:Cakephp 3 how to set maximum number of selected option in multiple select?Cakephp 3如何在多选中设置最大选定选项数?
【发布时间】:2015-05-15 00:26:28
【问题描述】:

我想设置一个规则来限制访问者在一个字段中可以选择的选项数量多选。

我试过了,还是不行

$validator
    ->add('colors._ids', [
        'multiple'=>[
            'rule'=>['multiple', ['max'=>3]],
            'message'=>'Please select only one color'
        ]
    ])
    ->requirePresence('colors._ids', 'create');
//    ->allowEmpty('colors._ids');

return $validator;

在视图中,字段显示如下:

echo $this->Form->input('colors._ids', ['options' => $colors, 'multiple' => true]);

使用 debugtoolkit 我可以阅读:

  • _serialize(数组)
  • 汽车(数组)
  • 新(真)
  • 可访问(数组)
  • 属性(数组)
  • 脏(数组)
  • 原件(空)
  • 虚拟(空)
  • 错误(数组)
  • colors._ids(array)
  • _required 此字段为必填项
  • 存储库汽车
  • 用户(数组)
  • 颜色(数组)

非常感谢您的帮助

【问题讨论】:

  • 您提交表单时是否收到任何错误?

标签: php forms validation cakephp-3.0


【解决方案1】:

我遇到了类似的问题,为了解决它,我最终使用了custom validation rule

例如:

->add('tablename', 'custom', [
            'rule' => function($value) {
                return (bool)(is_array($value['_ids']) && count($value['_ids']) === 3);
            },
            'message' => 'Please select 3.'
        ]);

此规则将确保用户从选择中选择 3 个项目。不多不少,我相信你可以根据你的问题调整它。

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多