2012-04-03 8 views
1

配送コストプルダウンの動的値を使用してダイナミックマルチオプションを選択しようとしましたが、Zendフォームで保護された変数にアクセスする方法は?

アレイが入ってきて、選択入力がうまく作成されますが、保護された値は省略されます。これは私には意味がありません。私は保護された値にアクセスするためにパブリックゲッターを使ってみましたが、まだ空白になっています。ここ

 protected $_regular  = 4.95; 
     protected $_oneDay  = 14.95; 
     protected $_twoDay  = 14.95; 

     public function getShippingOpts(){ 

      return array(
       "regular"=>"Regular 5-7 Business Days $".$this->_regular, 
       "two-day"=>"Express 3-4 Business Days $".$this->_twoDay, 
       "one-day"=>"Overnight 1-2 Business Days $".$this->_oneDay 
      ); 
     } 

は、フォームのinit関数内に置かれた$フォームコードです:

$shType = new Zend_Form_Element_Radio("sh_type"); 
    $shType->setLabel("Please select a type of shipping") 
      ->setAttrib('class', 'co-shipping-type') 
      ->setRequired(true) 
    ->setMultiOptions(ORed_Shipping_LabelFactory::getShippingOpts()); 
    $shTypeToSubmit = new Zend_Form_Element_Hidden('speed'); 
    $shipping2->addElements(array($shType, $shTypeToSubmit)); 
+0

掲載されたコードは正しいと思われます。 $ formオブジェクトを初期化するコードを投稿できますか? –

+3

問題は、静的メソッドのように 'getShippingOpts()'を呼び出そうとしていることでしょうか?関数とプロパティの静的キーワードを追加してみてください。 '$ this-> _ regular'を' self :: $ _ regular'に修正してみてください。 – dbrumann

答えて

0

あなたはインスタンス変数を使用することはできませんので、ORed_Shipping_LabelFactoryのインスタンスを作成していないので($これで始まる変数はインスタンスです変数)。

static $_regular  = 4.95; 
      static $_oneDay  = 14.95; 
      static $_twoDay  = 14.95; 

      public static function getShippingOpts(){ 

       return array(
        "regular"=>"Regular 5-7 Business Days $".self::$_regular, 
        "two-day"=>"Express 3-4 Business Days $". self::$_twoDay, 
        "one-day"=>"Overnight 1-2 Business Days $". self::$_oneDay 
       ); 
      } 
+0

本当にありがとう、私の理想的なシナリオは、データベースからは、結局インスタンスが必要なように見えます。 –

+0

それを助けてくれてうれしく思います。 –

関連する問題