在這裏,我再次與一個簡單的問題。Zend MultiCheckbox:設置最大選擇
是否有一個現有的zend驗證器可以將最大值設置爲用戶可以選擇的框。 我希望他們選擇不超過3個框。
我搜索了網頁,唯一發現的是在表單元素的isValid函數中設置錯誤。但是,我得到了這個問題,每個選定的框顯示錯誤。 (所以4次或更多次)或者,也許有人知道如何處理這個問題?如果我能夠只顯示一次這個錯誤,我的問題也會得到解決。
謝謝你的幫助。
在這裏,我再次與一個簡單的問題。Zend MultiCheckbox:設置最大選擇
是否有一個現有的zend驗證器可以將最大值設置爲用戶可以選擇的框。 我希望他們選擇不超過3個框。
我搜索了網頁,唯一發現的是在表單元素的isValid函數中設置錯誤。但是,我得到了這個問題,每個選定的框顯示錯誤。 (所以4次或更多次)或者,也許有人知道如何處理這個問題?如果我能夠只顯示一次這個錯誤,我的問題也會得到解決。
謝謝你的幫助。
您可以使用我的驗證器,它會根據值的數量進行檢查。我完全用於相同的目的 - 驗證多選中最大和最小選定值的數量:
<?php
class App_Validate_ValuesNumber extends Zend_Validate_Abstract
{
const TOO_LESS = 'tooLess';
const TOO_MUCH = 'tooMuch';
protected $_type = null;
protected $_val = null;
/**
* @var array
*/
protected $_messageTemplates = array(
self::TOO_LESS => "At least %num% values required",
self::TOO_MUCH => "Not more then %num% required",
);
/**
* @var array
*/
protected $_messageVariables = array(
'num' => '_val'
);
/**
* Constructor for the integer validator
*
* @param string $type Comparison type, that should be used
* TOO_LESS means that value should be greater then items number
* TOO_MUCH means opposite
* @param int $val Value to compare items number with
*/
public function __construct($type, $val)
{
$this->_type = $type;
$this->_val = $val;
}
/**
* Defined by Zend_Validate_Interface
*
* Returns true if and only if $value is a valid integer
*
* @param string|integer $value
* @return boolean
*/
public function isValid($value)
{
// Value shoul dbe greated
if ($this->_type == self::TOO_LESS) {
if (count($value) < $this->_val) {
$this->_error(self::TOO_LESS);
return false;
}
}
// Value should be less
if ($this->_type == self::TOO_MUCH) {
if (count($value) > $this->_val) {
$this->_error(self::TOO_MUCH);
return false;
}
}
return true;
}
}
自己寫驗證程序當然是另一個很好的解決方案!我做了一些更改,導致驗證器在每個複選框上運行。所以$值總是隻包含1個值。我已經使用$ context參數來獲取值。 – Tim
如何調用此驗證程序? – JellyBelly
'$ this-> someFormElement - > - > addValidator(new App_Validate_ValuesNumber(App_Validate_ValuesNumber :: TOO_LESS,3))' 意味着應該選擇不小於3的值 –
我只是爲了今天而戰。這是一個zend錯誤。 http://framework.zend.com/issues/browse/ZF-11667。在這個問題上有一個解決方案,但是直到1.12版本纔會出現。我不想等,所以我修補了我的Zend_Form_Element。修復工程很好。在修復之前,我對MultiChecks的錯誤消息對每個檢查過的盒子重複一次。
也許將它們分組,爲您自己快速編寫的組添加驗證器。顯示組中的錯誤,而不是每個元素。 – hakre