我仍然有一部分东西,这个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");
P.S我不介意改变方法并使用更好的方法。
答案 0 :(得分:2)
使用Zend_Validate_InArray怎么样?它将避免需要否定正则表达式(这总是有点棘手)。
在你的情况下,它会像
$ channels-&gt; addValidator('inArray',true,array(“BBC”=&gt;“BBC”, “频道4”=&gt; “频道4”));
希望有所帮助,
答案 1 :(得分:1)
所以你希望选择框是可选的,但你有setRequired(true)
?这听起来不对。
在任何情况下,如果选择“请选择一个”,您的多重选项中的值为“请选择一个”。我相信你想要:
$pubs = array(
null => "Please Choose One",
"BBC" => "BBC",
"Channel 4" => "Channel 4"
);
查看我的一些代码,当我想要一个空白项目时,我正在创建我的选项数组:
$multiOptions = array();
if (!$options->required) $multiOptions[] = false;
所以基本上用空白点开始多选项。