View Full Version : تغییر مقدار آرایه درون یک object (حل شد)
  
engmmrj
یک شنبه 16 آذر 1393, 15:22 عصر
من یک object دارم که درون این object یک آرایه هست و میخواستم مقدار این آرایه رو تغییر بدم ولی اررو میده !
$model->expire[1] = 02
 		Indirect modification of overloaded property Product::$expire has no effect
MMSHFE
یک شنبه 16 آذر 1393, 17:30 عصر
احتمالاً با & یک کپی ارجاعی درست کردین. & رو بردارین تا مشکل برطرف بشه. اگه اینطور نیست کد کامل رو بگذارین (از زمان مقداردهی و درصورت نیاز کد مدل) تا مشکل رو رفع کنیم. ضمناً تاپیک رو در بخش Yii ایجاد کنید.
engmmrj
یک شنبه 16 آذر 1393, 20:22 عصر
احتمالاً با & یک کپی ارجاعی درست کردین. & رو بردارین تا مشکل برطرف بشه. اگه اینطور نیست کد کامل رو بگذارین (از زمان مقداردهی و درصورت نیاز کد مدل) تا مشکل رو رفع کنیم. ضمناً تاپیک رو در بخش Yii ایجاد کنید.
خود yii مدیریت می کنه من چیزی نگذاشتم .
public function actionCreate()
    {
        $model=new Product;
        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);
        if(isset($_POST['Product']))
        {
            $model->attributes=$_POST['Product'];
                    
                        $model->file=CUploadedFile::getInstance($model,'file');
                        
                        if($model->validate()) {
                            
                            $dir = getcwd().'/uploads/';
                            $lastId = Product::model()->find(array('order' => 'id DESC'));
                            $lastId = $lastId == NULL ? 1 : $lastId->id;
                            $fileName = $lastId.'_'.md5(microtime()*98231.222).'.'.$model->file->extensionName;
                            $model->image = $fileName;
                            
                       
                            
                            $mode->expire[1] = $this->_pasteZiroToDate($model->expire[1]);
                            $mode->expire[2] = $this->_pasteZiroToDate($model->expire[2]);
                            
                            $model->expire = implode('-', $model->expire);
                        }
            if($model->save()) {
                                $model->file->saveAs($dir.$fileName);
                                
                                foreach($model->cat as $key => $cat) {
                                    Yii::app()->db->createCommand()->insert('{{product_cat}}', array('product_id'=> $model->id, 'cat_id' => $cat));
                                }
                                
                                $this->redirect(array('admin'));
                        }
        }
        $this->render('create',array(
            'model'=>$model,
        ));
    }
 
                 <?php echo $form->dropDownList($model, 'expire[]', array_combine(range(Yii::app()->jdate->date('Y'), Yii::app()->jdate->date('Y')+10), range(Yii::app()->jdate->date('Y'), Yii::app()->jdate->date('Y')+10)));?>
                 <?php echo $form->dropDownList($model, 'expire[]', array_combine(range(1, 12), range(1, 12)));?>
                 <?php echo $form->dropDownList($model, 'expire[]', array_combine(range(1, 31), range(1, 31)));?>
MMSHFE
دوشنبه 17 آذر 1393, 09:33 صبح
خوب شما الان mode$ نوشتین نه model$ و ضمناً ساختار دستیابهای خودکار get و set توی ActiveRecord در Yii به نحوی پیاده سازی شده که اجازه ایجاد فیلدهای خودکار رو نمیده و حتماً باید توی Schema در دیتابیس وجود داشته باشن. دقیقاً بگین چه کاری میخواین انجام بدین تا راهش رو خدمتتون بگم.
engmmrj
دوشنبه 17 آذر 1393, 10:57 صبح
اینجوری درستش کردم.
public function actionCreate()
    {
        $model=new Product;
        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);
        if(isset($_POST['Product']))
        {
            $model->attributes=$_POST['Product'];
                    
                        $model->file=CUploadedFile::getInstance($model,'file');
                        
                        if($model->validate()) {
                            
                            $dir = getcwd().'/uploads/';
                            $lastId = Product::model()->find(array('order' => 'id DESC'));
                            $lastId = $lastId == NULL ? 1 : $lastId->id;
                            $fileName = $lastId.'_'.md5(microtime()*98231.222).'.'.$model->file->extensionName;
                            $model->image = $fileName;
                            
                            $date = array($model->expire[0], $this->_pasteZiroToDate($model->expire[1]),$this->_pasteZiroToDate($model->expire[2]));
                            $model->expire = implode('-', $date);
                        }
            if($model->save()) {
                                $model->file->saveAs($dir.$fileName);
                                
                                foreach($model->cat as $key => $cat) {
                                    Yii::app()->db->createCommand()->insert('{{product_cat}}', array('product_id'=> $model->id, 'cat_id' => $cat));
                                }
                                
                                $this->redirect(array('admin'));
                        }
        }
        $this->render('create',array(
            'model'=>$model,
        ));
    }
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.