Php Zend_Form_Element_Select上的默认值

Php Zend_Form_Element_Select上的默认值,php,zend-framework,zend-form-element,Php,Zend Framework,Zend Form Element,我仍然有一部分是这样的,Zend的事情是一个可怕的混乱,有些人在以后的阶段会原谅自己,但它没有遵循任何结构,文档也很可怕,这总是把我带到一个幸运的地方,那就是stackoverflow 所以我的问题是,我试图初始化一个,我想要一个默认值请选择一个,如果用户最终选择请选择一个作为值,我想抛出一个错误。我这样做不起作用,因为我不能负匹配正则表达式,或者我可以吗? 另外,我不介意改变情况,并使用更好的方法。所以您希望选择框是可选的,但您有设置必需(true)?听起来不对 在任何情况下,在您的多选项中,

我仍然有一部分是这样的,Zend的事情是一个可怕的混乱,有些人在以后的阶段会原谅自己,但它没有遵循任何结构,文档也很可怕,这总是把我带到一个幸运的地方,那就是stackoverflow

所以我的问题是,我试图初始化一个
,我想要一个默认值
请选择一个
,如果用户最终选择
请选择一个
作为值,我想抛出一个错误。我这样做不起作用,因为我不能负匹配正则表达式,或者我可以吗?


另外,我不介意改变情况,并使用更好的方法。

所以您希望选择框是可选的,但您有
设置必需(true)
?听起来不对

在任何情况下,在您的多选项中,如果选择了“请选择一个”,则您的值为“请选择一个”。我相信你想要:

$pubs = array(
    null         => "Please Choose One",
    "BBC"        => "BBC",
    "Channel 4"  => "Channel 4"
);
查看我的一些代码,当我想要一个空白项时,我会创建选项数组,如下所示:

$multiOptions = array();
if (!$options->required) $multiOptions[] = false;
因此,基本上从一个空白点开始使用多选项。

用它来代替怎么样?这样可以避免否定regexp(这总是有点棘手)

在你的情况下,可能是

$channels->addValidator('inArray',true,数组(“BBC”=>“BBC”, “第四频道”=>“第四频道”)


希望这会有所帮助,

就像一个符咒一样,正是我想要的,我明白你的意思,把第一个元素保留为false。我认为您需要给出一个更大的代码片段来真正理解您的意思。简单的方法是将defaut选项的值设置为“”,并设置一个
notEmpty
验证器
$multiOptions = array();
if (!$options->required) $multiOptions[] = false;