Как получить доступ к защищенной переменной в формах Zend? - PullRequest
1 голос
/ 03 апреля 2012

Я пытаюсь создать динамический выбор множественного выбора, используя динамические значения для снижения стоимости доставки,

массив входит и создает штраф ввода ввода, но защищенные значения опускаются.это не имеет смысла для меня.я даже пытался использовать публичный метод получения доступа к защищенному значению, но оно все еще пустое.

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

вот код формы $, помещенный в функцию инициализации формы:

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

1 Ответ

0 голосов
/ 03 апреля 2012

Поскольку вы не создаете экземпляр ORed_Shipping_LabelFactory, следовательно, вы не можете использовать переменные экземпляра (переменные, которые начинаются с $ this, являются переменными экземпляра).

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