后台管理前台会员发布的文章,可以通过YII2自带攻击gii中的crud生成,既方便又省事。
修改后台文章列表显示界面,将不需要显示的去掉,同时做语言包映射将英文内容改为中文显示。
文章列表界面修改(backend/views/posts/index.php),修改后的代码:
<?php use yii\helpers\Html; use yii\grid\GridView; use yii\helpers\Url; /* @var $this yii\web\View */ /* @var $searchModel common\models\PostsSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = '文章列表'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="posts-model-index"> <h1><?= Html::encode($this->title) ?></h1> <?php // echo $this->render('_search', ['model' => $searchModel]); ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'id', 'title'=>[ 'attribute'=>'title', 'format'=>'raw', 'value'=>function($model){ return '<a href="http://frontend2.yii.com'.Url::to(['posts/view','id'=>$model->id]).'">'.$model->title.'</a>'; } ], //'summary', //'content:ntext', //'label_img', 'cat.cat_name', //'user_id', 'user_name', 'is_valid'=>[ 'attribute'=>'is_valid', 'value'=>function($model){ return ($model->is_valid==1) ? '发布':'审核'; }, 'filter'=>['0'=>'审核','1'=>'发布'], ], 'created_at:datetime', //'updated_at', ['class' => 'yii\grid\ActionColumn'], ], ]); ?> </div>
语言包映射:(语言包映射需要配置)
/** * @inheritdoc */ public function attributeLabels() { return [ 'id' => Yii::t('common', 'id'),//不配置语言包也可以直接在这里设置对应的中文 'title' => Yii::t('common', 'title'), 'summary' => Yii::t('common', 'summary'), 'content' => Yii::t('common', 'content'), 'label_img' => Yii::t('common', 'label_img'), 'cat_id' => Yii::t('common', 'cat_id'), 'user_id' => Yii::t('common', 'user_id'), 'user_name' => Yii::t('common', 'user_name'), 'is_valid' => Yii::t('common', 'is_valid'), 'created_at' => Yii::t('common', 'created_at'), 'updated_at' => Yii::t('common', 'updated_at'), ]; }
通过关联关系获取文章分类
/** * 获取文章分类关联 * @return \yii\db\ActiveQuery */ public function getCat() { return $this->hasOne(CatsModel::className(),['id'=>'cat_id']); }
文章修改调整
<div class="posts-model-form"> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'cat_id')->textInput() ?> <?= $form->field($model, 'is_valid')->dropDownList(['0'=>'审核','1'=>'发布']) ?> <div class="form-group"> <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?> </div> <?php ActiveForm::end(); ?> </div>
后台界面效果: