2015-05-15 36 views
1

我想設置一個規則來限制選項訪問者的數量可以在一個字段中選擇多選。Cakephp 3如何在多選中設置所選選項的最大數量?

我嘗試這樣做,但它不工作

$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(array)
  • car(array)
  • 新的(真)
  • 訪問(陣列)
  • 性質(陣列)
  • 髒(陣列)
  • 原(空)
  • 虛擬(空)
  • 錯誤(陣列)
  • colors._ids(陣列)
  • _required此域爲必填項
  • 庫汽車
  • 用戶(陣列)
  • 顏色(陣列)

非常感謝您的幫助

+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項。沒有更多,我相信你可以適應你的問題。

+1

它的工作,非常感謝你! – dmeskel

相關問題