繁体   English   中英

Zend_Form_Element_Select上的默认值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM