2012-04-03 6 views
1

ich versuche, eine dynamische multioption zu erstellen, wählen Sie dynamische Werte für eine Versandkosten Pulldown,Wie kann ich auf eine geschützte Variable in Zend-Formularen zugreifen?

das Array kommt und erstellt die Select-Eingabe in Ordnung, aber die geschützten Werte sind weggelassen. Das ergibt für mich keinen Sinn. Ich habe sogar versucht, mit einem öffentlichen Getter auf den geschützten Wert zugreifen, aber es kommt immer noch leer.

 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 
      ); 
     } 

hier ist der Code innerhalb der init-Funktion des Formulars platziert $ form:

$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

Der Code wie angegeben, scheint korrekt. Können Sie den Code posten, der das $ form-Objekt initialisiert? –

+3

Vielleicht ist das Problem, dass Sie versuchen, 'getShippingOpts()' wie eine statische Methode aufzurufen? Versuchen Sie, das static-Schlüsselwort, die Funktion und die Eigenschaften hinzuzufügen (und '$ this -> _ regular 'zu' self :: $ _ regular' zu korrigieren. – dbrumann

Antwort

0

Da Sie nicht Instanz ORed_Shipping_LabelFactory Erstellung sind daher nicht Instanzvariablen (Variablen, die mit $ beginnt dies sind beispielsweise verwenden können Variablen).

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

Vielen Dank, macht jetzt Sinn, mein ideales Szenario ist, dass diese Variablen gesetzt werden von der db so sieht aus wie ich brauche eine Instanz nach allem –

+0

Froh, dass es geholfen hat, bitte akzeptieren Sie die Antwort, indem Sie es überprüfen. –

Verwandte Themen