2011-11-15 26 views
1

このZendのことは、後の段階で自分自身を許してしまう恐ろしい混乱ですが、それでも構造はなく、ドキュメントは恐ろしいものです。幸運な所はです。stackoverflowです。Zend_Form_Element_Selectのデフォルト値

だから、私の問題は、<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

簡単な方法は、defautオプションに「」の値を設定し、インデックスはいけない仕事として 'notEmpty'バリデータに –

答えて

2

代わりにZend_Validate_InArrayを使用するのはどうですか?正規表現を否定する必要はありません(これはややこしいことです)。あなたのケースでは

、それは

$ channels-> addValidator( 'InArrayバリ'、trueの場合、列( "BBC" => "BBC"、 "チャンネル4" => "のようなものになるだろうチャネル4 "));助け

希望、

+0

魅力のように動作する、まったく何を探しています –

1

したがって、選択ボックスをオプションにしたいのに、setRequired(true)がありますか?それは正しいとは言えません。

いずれの場合でも、「1つを選択してください」が選択されている場合、複数のオプションで「1つを選択してください」という値があります。

$pubs = array(
    null   => "Please Choose One", 
    "BBC"  => "BBC", 
    "Channel 4" => "Channel 4" 
); 

私は空白の項目をしたいとき、私はそうのような私のオプションの配列を作成しています、私のコードのいくつかを見てみると::

$multiOptions = array(); 
if (!$options->required) $multiOptions[] = false; 

をしたがって、基本的に複数オプションを始め、私はあなたがしたいと考えています空白の場所。

+0

' null'なのでを設定することです。 Thatsはちょっと奇妙だと思われる –

+0

最初の要素をfalseのままにしておけば意味が分かります。私はあなたが本当にあなたが意味するものを理解するために大きなスニペットを与える必要があると思います –