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

Cakephp 3 how to set maximum number of selected option in multiple select?

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

我试过了,但是没用

$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 我可以阅读:

非常感谢您的帮助

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

例如:

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

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