zoukankan      html  css  js  c++  java
  • yii2.0的学习之旅(二)

    前言:上一次我们简单认识了一下yii2.0安装,模型基本(增,删,改,查)操作

    一、前后台数据交互

    *如果你觉得默认的top样式太丑,可以这样关掉*

     

    *底部也可以这样关掉*

     

    (1)mvc合作操作数据

    控制器(c),显示方法与接收方法

        /**
         * 列表
         * @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),自己在原来的基础上封装了一下

    框架分页要引用一个文件

    use yiidataPagination;    //分页类
        /**
         * 根据条件查询多条数据
         * @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组件

    index.php(列表)

    <?php
    use yiihelpersHtml;
    use yiigridGridView;
    use yiiwidgetsLinkPager;  //引用分页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 yiihelpersHtml;
    use yiiwidgetsActiveForm;
    $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 yiihelpersHtml;
    use yiiwidgetsActiveForm;
    $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注意事项

    1、控制器方法名必须是小驼峰方式;

    例如:actionFormadd,错误:actionFormAdd(这种是访问不到的)

    2、本来打算是用原生form标签,但是,发现不好兼容验证规则,所以做罢

    相关网址

    yii2表单验证方法:https://blog.csdn.net/song_csdn1550/article/details/51004815

    yii2.0 Activeform表单部分组件使用方法:https://www.cnblogs.com/ymk0375/p/6285217.html

    yii2.0 控制器方法 视图表单 Form表单处:https://www.cnblogs.com/jiufen/p/5086162.html

  • 相关阅读:
    python中高级函数使用
    解决dev GridControl 刷新数据后,滚动条恢复原来位置
    DEV GridControl 控件属性大全
    玩转DevExpress.XtraGrid.view.gridview
    DevExpress表格GridControl控件属性设置总结
    devExpress之GridView属性设置总结(图文)
    Devexpress GridView部分常用操作总结
    SQLServer 日期函数大全
    SQL中ISNULL用法示例
    sql中的模糊查询及字段前加N的作用
  • 原文地址:https://www.cnblogs.com/FLy-1992/p/11672751.html
Copyright © 2011-2022 走看看