Yii PHP-属性未定义

w8f9ii69  于 2022-11-09  发布在  PHP
关注(0)|答案(7)|浏览(216)

我正在管理一个建立在Yii框架上的网站,非常随机地开始得到下面的错误。不确定为什么会发生这种情况,因为源代码还没有被接触。
感谢你的帮助。谢谢!

CException
    Description
    Property "feature.mobile_hero_img" is not defined.
    Source File
    /data/www.zoomiezoom.com/yii/framework/db/ar/CActiveRecord.php(106)
    00094:      */
    00095:     public function __get($name)
    00096:     {
    00097:         if(isset($this->_attributes[$name]))
    00098:             return $this->_attributes[$name];
    00099:         else if(isset($this->getMetaData()->columns[$name]))
    00100:             return null;
    00101:         else if(isset($this->_related[$name]))
    00102:             return $this->_related[$name];
    00103:         else if(isset($this->getMetaData()->relations[$name]))
    00104:             return $this->getRelated($name);
    00105:         else
    00106:             return parent::__get($name);
    00107:     }
    00108: 
    00109:     /**
    00110:      * PHP setter magic method.
    00111:      * This method is overridden so that AR attributes can be accessed like properties.
    00112:      * @param string property name
    00113:      * @param mixed property value
    00114:      */
    00115:     public function __set($name,$value)
    00116:     {
    00117:         if($this->setAttribute($name,$value)===false)
    00118:         {
    Stack Trace
    #0 /data/www.zoomiezoom.com/yii/framework/db/ar/CActiveRecord.php(106): CComponent->__get('mobile_hero_img')
    #1 /data/www.zoomiezoom.com/yii/framework/web/helpers/CHtml.php(1624): CActiveRecord->__get('mobile_hero_img')
    #2 /data/www.zoomiezoom.com/yii/framework/web/helpers/CHtml.php(1100): CHtml::activeInputField('text', Object(feature), 'mobile_hero_img', Array)
    #3 /data/www.zoomiezoom.com/protected/views/feature/_form.php(74): CHtml::activeTextField(Object(feature), 'mobile_hero_img', Array)
    #4 /data/www.zoomiezoom.com/yii/framework/web/CBaseController.php(119): require('/data/www.theax...')
    #5 /data/www.zoomiezoom.com/yii/framework/web/CBaseController.php(88): CBaseController->renderInternal('/data/www.theax...', Array, true)
    #6 /data/www.zoomiezoom.com/yii/framework/web/CController.php(732): CBaseController->renderFile('/data/www.theax...', Array, true)
    #7 /data/www.zoomiezoom.com/protected/views/feature/create.php(14): CController->renderPartial('_form', Array)
    #8 /data/www.zoomiezoom.com/yii/framework/web/CBaseController.php(119): require('/data/www.theax...')
    #9 /data/www.zoomiezoom.com/yii/framework/web/CBaseController.php(88): CBaseController->renderInternal('/data/www.theax...', Array, true)
    #10 /data/www.zoomiezoom.com/yii/framework/web/CController.php(732): CBaseController->renderFile('/data/www.theax...', Array, true)
    #11 /data/www.zoomiezoom.com/yii/framework/web/CController.php(671): CController->renderPartial('create', Array, true)
    #12 /data/www.zoomiezoom.com/protected/controllers/FeatureController.php(71): CController->render('create', Array)
    #13 /data/www.zoomiezoom.com/yii/framework/web/actions/CInlineAction.php(32): FeatureController->actionCreate()
    #14 /data/www.zoomiezoom.com/yii/framework/web/CController.php(300): CInlineAction->run()
    #15 /data/www.zoomiezoom.com/yii/framework/web/filters/CFilterChain.php(129): CController->runAction(Object(CInlineAction))
    #16 /data/www.zoomiezoom.com/yii/framework/web/filters/CFilter.php(41): CFilterChain->run()
    #17 /data/www.zoomiezoom.com/yii/framework/web/CController.php(983): CFilter->filter(Object(CFilterChain))
    #18 /data/www.zoomiezoom.com/yii/framework/web/filters/CInlineFilter.php(59): CController->filterAccessControl(Object(CFilterChain))
    #19 /data/www.zoomiezoom.com/yii/framework/web/filters/CFilterChain.php(126): CInlineFilter->filter(Object(CFilterChain))
    #20 /data/www.zoomiezoom.com/yii/framework/web/CController.php(283): CFilterChain->run()
    #21 /data/www.zoomiezoom.com/yii/framework/web/CController.php(257): CController->runActionWithFilters(Object(CInlineAction), Array)
    #22 /data/www.zoomiezoom.com/yii/framework/web/CWebApplication.php(320): CController->run('create')
    #23 /data/www.zoomiezoom.com/yii/framework/web/CWebApplication.php(120): CWebApplication->runController('feature/create')
    #24 /data/www.zoomiezoom.com/yii/framework/base/CApplication.php(135): CWebApplication->processRequest()
    #25 /data/www.zoomiezoom.com/public_html/admin_tae/index.php(13): CApplication->run()
    #26 {main}

feature.php的架构

<?php

class feature extends CActiveRecord
{
    /**
     * The followings are the available columns in table 'feature':
     * @var integer $id
     * @var integer $feature_name_id
     * @var string $display_name
     * @var integer $language_id
     * @var string $long_blurb
     * @var string $short_blurb
     * @var string $subhead_text
     * @var string $hero_img
     * @var string $mobile_hero_img
     * @var string $thumb_sm
     * @var string $thumb_md
     * @var string $thumb_lg
     * @var string $link_url
     * @var string $link_image
     * @var string $link_text
     * @var string $buyit_id
     * @var string $seo_text
     * @var string $meta_description
     * @var string $meta_keywords
     * @var integer $category_id
     * @var integer $sub_cat_id
     * @var string $deep_link
     * @var string $tracking_id
     * @var integer $weight
     * @var integer $initial_rating
     * @var string $active
     * @var string $created
     * @var string $modified
     */

    /**
     * Returns the static model of the specified AR class.
     * @return CActiveRecord the static model class
     */
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return 'feature';
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('feature_name_id', 'required'),
            array('feature_name_id, language_id, category_id, sub_cat_id, weight, initial_rating', 'numerical', 'integerOnly'=>true),
            array('active', 'length', 'max'=>1),
            array('display_name, long_blurb, short_blurb, subhead_text, page_title, hero_img, mobile_hero_img, thumb_sm, thumb_md, thumb_lg, link_url, link_image, link_text, buyit_id, seo_text, meta_description, meta_keywords, deep_link, tracking_id, created', 'safe'),
        );
    }

    /**
     * @return array relational rules.
     */
    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        // 'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options)
        return array(
            'feature_name' => array(self::BELONGS_TO, 'feature_name', 'feature_name_id', 'alias'=>'feature_name'),
            'language' => array(self::BELONGS_TO, 'language', 'language_id', 'on'=>'t.language_id = language.id', 'alias'=>'language'),
            'category' => array(self::BELONGS_TO, 'category', 'category_id', 'alias'=>'category'),
            'sub_cat' => array(self::BELONGS_TO, 'sub_cat', 'sub_cat_id'),
            'language_r' => array(self::BELONGS_TO, 'language', 'language_id', 'alias'=>'language'),
        );
    }
    /**
     * @return array Named Scopes.
     */
    public function scopes()
    {
        return array(
            'active'=>array(
                'condition' => 't.active="y"',
                'order' => 'feature_name.type_id DESC, category_id, sub_cat_id, t.weight ASC',
            ),
        );

    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels()
    {
        return array(
            'id' => 'Id',
            'feature_name_id' => 'Feature Name ID',
            'display_name' => 'Display Name',
            'language_id' => 'Language',
            'long_blurb' => 'Main Description',
            'short_blurb' => 'Short Blurb',
            'subhead_text' => 'Subhead Text',
            'page_title' => 'Browser Title',
            'hero_img' => 'Hero Img',
            'mobile_hero_img' => 'Mobile Hero Img',
            'thumb_sm' => 'Small Thumbnail',
            'thumb_md' => 'Medium Thumbnail ',
            'thumb_lg' => 'Large Thumbnail',
            'link_url' => 'CTA Link Url',
            'link_image' => 'CTA Link Image',
            'link_text' => ' CTA Link Text',
            'buyit_id' => ' BuyIt Link Product ID',
            'seo_text' => 'SEO Copy',
            'meta_description' => 'Meta Description',
            'meta_keywords' => 'Meta Keywords',
            'category_id' => 'Category',
            'sub_cat_id' => 'Sub Category',
            'deep_link' => 'Deep Link',
            'tracking_id' => 'Tracking ID',
            'weight' => 'Weight',
            'initial_rating' => 'Initial Rating',
            'active' => 'Active',
            'created' => 'Created Date',
            'modified' => 'Modified Date',
        );
    }
}
ve7v8dk2

ve7v8dk21#

这是你的线索:


# 3 /data/www.zoomiezoom.com/protected/views/feature/_form.php(74): CHtml::activeTextField(Object(feature), 'mobile_hero_img', Array)

您正指向要素模型中不存在的字段。
它在模型中,在特征表中,你在表单中指向正确的模型了吗?

ycl3bljg

ycl3bljg2#

我猜您正在尝试访问扩展CActiveRecord的模型的属性。
这意味着:
您已经定义了此属性(移动的_hero_img),但现在已将其删除

您通过从表(模型类所关联的表)中删除列(移动的_hero_img)来更改数据库模式。

ni65a41a

ni65a41a3#

这看起来像是你的数据库领域的问题。
您是否在表单中添加了新的输入字段“移动的_hero_img”,而没有将该字段添加到数据库中?请提供“feature”表的架构。

jdzmm42g

jdzmm42g4#

对于每个在“属性未定义”问题上挣扎的人,我有一个建议:检查你的模型的rules()定义和框架的版本,因为Yii(1.1.16)中引入了一个bug,如果属性列表的末尾有额外的空格,就会导致这个错误:

// author_id WILL NOT WORK!!
array('app_id, group_id, author_id ', 'required'),

这个问题在Yii 1.1.17中得到了解决。

gjmwrych

gjmwrych5#

如果在定义属性时设置了字段的(文本)类型,并且在模型中将其定义为布尔值或整数,则也可能会出现“属性n未定义”问题。
例如,下面的文字类型属性是错误的。


* @property boolean $billing_address

正确的定义是


* @property string $billing_address

有时候,一个小错误需要几个小时才能被追踪到。

w3nuxt5m

w3nuxt5m6#

我遇到了同样的问题。Model类中的一切都很完美,但问题仍然存在。重新启动服务器或SQL也无济于事。最后,我清除了protected/runtime/cachexxxx.db文件,然后一切都正常了。我用migrate文件修改了表,有时会出现错误,所以可能是混合了一些东西。

6yjfywim

6yjfywim7#

当我升级到yii 1.1.17时,我的问题得到了解决
此致

相关问题