本文作者:心月

YII2高级版框架搭建完整博客系统教程——定义场景

心月IT博客 2019-03-14
YII2高级版框架搭建完整博客系统教程——定义场景摘要:表单(postsForm)中定义场景 通过场景将文章的创建、修改、删除等区分开来。 定义场景常量、设置场景

1、在表单(postsForm)中定义场景

    通过场景将文章的创建、修改、删除等区分开来。

定义场景常量、设置场景

/**
 * 定义场景常量
 * SCENARIO_CREATE 创建场景
 * SCENARIO_UPDATE 更新场景
 */
const SCENARIO_CREATE = 'create';
const SCENARIO_UPDATE = 'update';

/**
 * 设置场景
 * self::SCENARIO_CREATE 设置创建文章场景需要用到的属性字段
 * self::SCENARIO_UPDATE 设置更新文章场景需要用到的属性字段
 * @return array  然后把设置的场景数据与继承的场景数据合并覆盖
 */
public function scenarios()
{
    $scenarios = [
        self::SCENARIO_CREATE => ['title','content','label_img','cat_id','tags'],
        self::SCENARIO_UPDATE => ['title','content','label_img','cat_id','tags'],
    ];

    return array_merge(parent::scenarios(),$scenarios);
}

定义场景

2、在控制器(postsController)定义场景

/**
 * 文章创建
 */
public function actionCreate()
{
    $model = new PostsForm();
    //定义场景
    $model -> setScenario(PostsForm::SCENARIO_CREATE);
    if ($model->load(Yii::$app->request->post()) && $model->validate()){
        if (!$model->create()){
            Yii::$app->session->setFlash('warning',$model->_lastError);
        }else{
            return $this->redirect(['posts/view','id'=>$model->id]);
        }
    }
    //获取所有分类
    $cat = CatsModel::getAllCats();
    return $this -> render('create',['model' => $model,'cat' => $cat]);

}

在postsController控制器中设置场景

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-03-14
若转载请注明原文及出处:https://www.xinyueseo.com/yii/184.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论