• 0

كيف أحصل على getTypeTex على Yii؟

أنا جديد على Yii، وعند تتبع بعض الدروس،  أدرجت الوظيفة التالية: }

public function getTypeOptions(){
        return array(self::TYPE_BUG=>'Bug',self::FEATURE=>'Feature',self::TASK=>'Task');
    }

ثم:

public function getTypeText(){
        $typeOptions = $this->typeOptions;
        return isset($typeOptions[$this->type_id]) ? $typeOptions[$this->type_id] : "unknown type ({$this->type_id})";
    }

مما فهمته أن getTypeOption ترجع مصفوفة من أنواع الـ TypeOption الموجودة داخل الاستمارة form، والتي تستعمل بالطريقة التالية:

$typeOptions = $this->typeOptions;

وقد حاولت أيضا بالطريقة التالية:

$typeOptions = $this->getTypeOptions();

لكن دون جدوى، فكيف أحصل على getTypeTex الخاصة بالاستمارة؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

نعم بالإمكان الحصول على ذلك من خلال getAttributeName داخل Model والتي يمكن استعمالها من خلال this->attributeName لاسترداد قيمة الوظيفة من خلال Moldel والتي يطلق عليها اسم  "virtual attribute"، ويمكن الاطلاع على الأمر اكثر من خلال الرابط.

بالنسبة للكود المُدرج في سؤالك، يمكن تصحيحه، وذلك من خلال:

/**
     * PHP getter magic method.
     * This method is overridden so that AR attributes can be accessed like properties.
     * @param string $name property name
     * @return mixed property value
     * @see getAttribute
     */
    public function __get($name)
    {
        if(isset($this->_attributes[$name]))
            return $this->_attributes[$name];
        elseif(isset($this->getMetaData()->columns[$name]))
            return null;
        elseif(isset($this->_related[$name]))
            return $this->_related[$name];
        elseif(isset($this->getMetaData()->relations[$name]))
            return $this->getRelated($name);
        else
            return parent::__get($name);
    }

وذلك باستخدام مايسمى بـ  getter magic method ، ويمكن أيضا استعمالها بالاطلاع على موقع php.:

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن