CategoryForm::save PHP Method

save() public method

public save ( )
    public function save()
    {
        $category = Category::model()->findByPk($this->id);
        if (is_null($category)) {
            // insert
            // Category
            $category = new Category();
            $category->date_added = date('Y-m-d');
            $category->date_modified = date('Y-m-d');
            $category->image = $this->image;
            $category->top = $this->top;
            $category->column = $this->columns;
            $category->sort_order = $this->sortOrder;
            $category->status = $this->status;
            $category->parent_id = $this->parent;
            $category->save();
            // Description
            $description = new CategoryDescription();
            $description->category_id = $category->category_id;
            $description->language_id = 1;
            // TODO: language must be dynamic
            $description->name = $this->name;
            $description->meta_description = $this->metaTagDescription;
            $description->meta_keyword = $this->metaTagKeywords;
            $description->description = $this->description;
            $description->save();
        } else {
            // update
            // Category
            $category->date_modified = date('Y-m-d');
            $category->image = $this->image;
            $category->top = $this->top;
            $category->column = $this->columns;
            $category->sort_order = $this->sortOrder;
            $category->status = $this->status;
            $category->parent_id = $this->parent;
            $category->save();
            // Description
            $category->description->name = $this->name;
            $category->description->meta_description = $this->metaTagDescription;
            $category->description->meta_keyword = $this->metaTagKeywords;
            $category->description->description = $this->description;
            $category->description->save();
        }
        // SEO keyword
        $category->updateSEOKeyword($this->seoKeyword);
        // Stores
        $category->clearAllStoresRelations();
        if (isset($this->stores) && count($this->stores)) {
            foreach ($this->stores as $storeId) {
                $category->addToStore($storeId);
            }
        }
        // Filters
        $category->clearAllFiltersRelations();
        if (isset($this->filters) && count($this->filters) > 0) {
            foreach ($this->filters as $filterId) {
                $category->addFilter($filterId);
            }
        }
    }

Usage Example

示例#1
0
 public function actionUpdate($id)
 {
     $model = new CategoryForm();
     if (isset($_POST['CategoryForm'])) {
         $model->attributes = $_POST['CategoryForm'];
         if ($model->validate()) {
             $model->save();
             $this->redirect(array('index'));
         }
     } else {
         $model->loadDataFromCategory($id);
     }
     $statuses = array(0 => Yii::t('common', 'Disabled'), 1 => Yii::t('common', 'Enabled'));
     $stores = CHtml::listData(Store::model()->findAll(), 'store_id', 'name');
     $stores[0] = Yii::t('store', 'Default');
     $this->render('update', array('model' => $model, 'stores' => $stores, 'statuses' => $statuses));
 }