[英]Default value on Zend_Form_Element_Select
还有一部分我认为Zend这个东西是一个可怕的混乱,有些人在后期会如何原谅它自己,但是它没有结构,而且文档很糟糕,这总是把我带到一个幸运的地方,就是stackoverflow 。
所以我的问题是,那个即时通讯试图初始化<select>
而我想要一个默认值Please Choose One
,如果用户最终选择Please Choose One
作为值,我想抛出一个错误。 我这样做的方式是有效的,因为我不能对正则表达式进行负面匹配, 或者我可以吗?
$pubs = array(
"Please Choose One" => "Please Choose One",
"BBC" => "BBC",
"Channel 4" => "Channel 4"
);
$channels = new Zend_Form_Element_Select("publication");
$channels->setLabel("Channels")
->setRequired(true)
->addMultiOptions($pubs)
->addValidator('regex', true, array(
"pattern" => "/Please Choose One/",
"messages" => array("regexNotMatch" => "Please choose a publisher")
)
)
->setValue("Please Choose One");
PS我不介意改变周围的事情,并使用更好的方法。
改为使用Zend_Validate_InArray呢? 它将避免需要否定正则表达式(这总是有点棘手)。
就您而言,它就像
$ channels-> addValidator('inArray',true,array(“BBC”=>“BBC”,“Channel 4”=>“Channel 4”));
希望有所帮助,
所以你希望选择框是可选的,但你有setRequired(true)
? 这听起来不对。
在任何情况下,如果选择“请选择一个”,则在多个选项中,您的值为“请选择一个”。 我相信你想:
$pubs = array(
null => "Please Choose One",
"BBC" => "BBC",
"Channel 4" => "Channel 4"
);
看一下我的一些代码,当我想要一个空白项时,我正在创建我的选项数组,如下所示:
$multiOptions = array();
if (!$options->required) $multiOptions[] = false;
所以基本上用空白点开始多选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.