Cakephp 3如何在多个选择中设置所选选项的最大数量?

时间:2015-05-15 00:26:29

标签: php forms validation cakephp-3.0

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

我试过了,但它没有用

$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(数组)
  • _required此字段是必填字段
  • repository Cars
  • 用户(阵列)
  • 颜色(阵列)

非常感谢您的帮助

1 个答案:

答案 0 :(得分:2)

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

例如:

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

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