前言:上一次咱們簡單認識了一下yii2.0安裝,模型基本(增,刪,改,查)操做php
1、先後臺數據交互html
*若是你以爲默認的top樣式太醜,能夠這樣關掉*數組
*底部也能夠這樣關掉*yii2
(1)mvc合做操做數據mvc
控制器(c),顯示方法與接收方法app
/** * 列表 * @return string */ public function actionIndex(){ $where = array(); $is_page = false; FcArticle::getConditionByList('a_id,article_title,author',$where,'a_id desc',$is_page,10); return $this->render('index', [ 'list' => FcArticle::$countries, 'pagination' => FcArticle::$pagination, 'is_page'=>$is_page ]); } /** * 添加 * @return string */ public function actionAdd() { $model = new FcArticle(); //是否經過驗證,接受數據 if ($model->load(\Yii::$app->request->post()) && $model->validate()) { // 在model裏面編輯好規則,經過以後,操做數據入庫 $model->insert(); return $this->redirect('index.php?r=test/index'); } else { return $this->render('add', [ 'model' => $model, ]); } } /** * 編輯 * @return string */ public function actionUpdate() { //是否經過驗證,接受數據 if(\Yii::$app->request->isGet){ $a_id = \Yii::$app->request->get('a_id'); // Yii::$app->request->queryParams; //get請求方式,多維數組 }else if(\Yii::$app->request->isPost){ $postParams = \Yii::$app->request->bodyParams; //post請求方式,多維數組 $a_id = $postParams['FcArticle']['a_id']; } $model = FcArticle::findOne(array('a_id'=>$a_id)); if ($model->load(\Yii::$app->request->post()) && $model->validate()) { // 在model裏面編輯好規則,經過以後,操做數據入庫 // https://www.jianshu.com/p/4d5a3a8256d3 附上網址,這裏有怎麼去掉index.php的方法 $model->update(); return $this->redirect('index.php?r=test/index'); } else { return $this->render('update', [ 'model' => $model, 'a_id'=>$a_id ]); } }
模型(m),本身在原來的基礎上封裝了一下框架
框架分頁要引用一個文件yii
use yii\data\Pagination; //分頁類
/** * 根據條件查詢多條數據 * @param string $field 字段 * @param array $condition 條件 * @param string $order 排序 * @param bool $page 是否有分頁 * @param int $pagesize 頁數 */ public static function getConditionByList($field = '',$condition = array(),$order = 'a_id desc',$page = false,$pagesize = 10) { $query=self::find(); if($page){ self::$pagination = new Pagination([ 'defaultPageSize' => $pagesize,//每頁顯示條數 'totalCount' => self::getConditionCount($condition),//總條數 ]);//分頁傳參 if(isset($field) && $field!=''){ $query->select($field); } self::$countries = $query ->where($condition) ->orderBy($order) ->offset(self::$pagination->offset)//偏移量 ->limit(self::$pagination->limit) ->all();//查詢到的分頁後的數據 }else{ if(isset($field) && $field!=''){ $query->select($field); } self::$countries = $query ->where($condition) ->orderBy($order) ->all();//查詢到的分頁後的數據 } } /** * 根據條件獲取總數 * @param array $condition * @return int|string */ public static function getConditionCount($condition = array()){ return self::find()->where($condition)->count(); } /** * 根據條件查詢單條數據 * @param string $field * @param array $condition * @return FcArticle|array|null */ public function getOneConditionInfo($field = '',$condition = array()){ $query = self::find(); if(isset($field) && $field!=''){ $query->select($field); } return $query->where($condition)->one(); }
視圖(v)渲染,這裏用的都是yii2.0內置的form組件post
index.php(列表)this
<?php use yii\helpers\Html; use yii\grid\GridView; use yii\widgets\LinkPager; //引用分頁link ?> <style> .list{ width: 100%; } .list .l-l,.l-l-h{ width:100%; text-align: center; } .l-l-h{ font-weight: bold; } .list .l-v,.l-h{ border: 1px solid #0b72b8; display:inline-block; width: 150px; float:left; padding: 0px; margin: 0px; text-align: center; } .l-h{ font-weight: bold; } .clear{ clear:both} </style> <?= Html::a('添加', ['test/add'], ['class' => 'profile-link']) ?> <div class="list"> <div class="l-l-h"> <p class="l-h"> 標題 </p> <p class="l-h"> 做者 </p> <p class="l-h"> 操做 </p> <div class="clear"></div> </div> <?php foreach ($list as $key=>$value){?> <div class="l-l"> <p class="l-v"> <?= $value['article_title']?> </p> <p class="l-v"> <?= $value['author']?> </p> <p class="l-v"> <?= Html::a('編輯', ['test/update','a_id'=>$value['a_id']], ['class' => 'profile-link']) ?> </p> <div class="clear"></div> </div> <?php }?> <?php if($is_page){ // 是否有分頁,有則顯示,無則關閉 ?> <?= LinkPager::widget([ 'pagination'=>$pagination, //'options'=>['class'=>'hidden']//關閉自帶分頁 'firstPageLabel'=>"首頁", 'prevPageLabel'=>'上一頁', 'nextPageLabel'=>'下一頁', 'lastPageLabel'=>'尾頁', ]) ?> <?php }?> </div>
add.php(增長)
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; $form = ActiveForm::begin(['action' => ['test/add'],'method'=>'post']); ?> <?= $form->field($model, 'article_title')->label('標題名') ?> <?= $form->field($model, 'author')->label('做者') ?> <?= Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?> <?php ActiveForm::end() ?>
update.php(編輯)
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; $form = ActiveForm::begin(['action' => ['test/update'],'method'=>'post']); ?> <?= $form->field($model, 'article_title')->label('標題名') ?> <?= $form->field($model, 'author')->label('做者') ?> <?= $form->field($model, 'a_id')->hiddenInput(['value'=>$a_id]) ?> <?= Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?> <?php ActiveForm::end() ?>
yii2.0注意事項
一、控制器方法名必須是小駝峯方式;
例如:actionFormadd,錯誤:actionFormAdd(這種是訪問不到的)
二、原本打算是用原生form標籤,可是,發現很差兼容驗證規則,因此作罷
相關網址
yii2表單驗證方法:https://blog.csdn.net/song_csdn1550/article/details/51004815
yii2.0 Activeform表單部分組件使用方法:http://www.javashuo.com/article/p-tnkjarbv-r.html
yii2.0 控制器方法 視圖表單 Form表單處:http://www.javashuo.com/article/p-bfvjxchb-bv.html