Yii2使用教程_yii2 rbac

Yii2使用教程_yii2 rbachttps://www.cnblogs.com/chengbocd/p/6125533.htmlhttps://www.yiichina.com/doc/guide/2.0/start-giiht


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

https://www.cnblogs.com/chengbocd/p/6125533.html

https://www.yiichina.com/doc/guide/2.0/start-gii

https://www.cnblogs.com/mthp/articles/6953692.html

https://www.cnblogs.com/wangzhilei/p/6613524.html

https://www.yiichina.com/tutorial/834

安装

中文文档:http://www.yiichina.com/doc/guide/2.0/start-installation

1,安装

这里我直接下载归档文件,压缩包安装了。composer各种麻烦,国情你懂得。

https://github.com/yiisoft/yii2/releases/download/2.0.2/yii-basic-app-2.0.2.tgz

Yii 2.0 需要 PHP 5.4.0 或以上版本支持。

解压至我的web目录  E:\wamp\www\ibrain\

2,配置

config/web.php 第12行

 'cookieValidationKey' => '123',//若你通过 Composer 安装,则此步骤会自动完成

 config/db.php

复制代码
复制代码
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=ibrain',//数据库配置
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
   'tablePrefix'=>'ib_',//表前缀,默认没有的,自己加上

];
复制代码
复制代码

 

 ok, 跑 http://localhost/ibrain/web/index.php

和http://localhost/ibrain/web/index.php?r=site/index?param=value 是完整路径

运行,看到 Congratulations! 界面了。

看根目录目录,没有index首页文件,如果访问http://localhost/ibrain会看到目录,如果不想改host配置,那我们可以新增一个index.php咯,指向web/index.php。

header("Location:web/index.php");die;

入门HelloWorld

为了弄清楚运行的机制,我们跑一个helloworld测试。

首先看/web/index.php

复制代码
复制代码
<?php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);//调试模式
defined('YII_ENV') or define('YII_ENV', 'dev');//前端的调试工具

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();//这种写法就是5.4以上才支持
复制代码
复制代码

执行后的默认首页,是跑到/controller/SiteController.php  下的actionIndex()去了。然后调用的/view/site/index.html

那我现在要换掉默认控制器,在/config/web.php 中添加一句  ‘defaultRoute’ => ‘index’, 这样默认控制器就是/controller/IndexControllor.php的actionIndex()了。不建议修改application.php 下的public $defaultRoute = ‘site’; 框架文件最好不要修改。下面是代码

复制代码
复制代码
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;

class IndexController extends Controller
{
  public function actionIndex()
    {    
        die("Hello world!!");//访问http://localhost/ibrain/index.php?r=index/index 
        //return $this->render('index');// /view/Index/index.html
    }
    public function actionHello()
    {    
        die("Hello world!!!!!");//http://localhost/ibrain/index.php?r=index/hello ,index.php可以省略。
    }

}
复制代码
复制代码

 数据库操作

上面的例子跑起来后,我想要从mysql中取点数据出来耍耍。开头我们的数据库已经配置好了名称为ibrain的数据库。

 

添加一张用户表,表结构:

复制代码
复制代码
CREATE TABLE `ib_admin` (
  `uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `gid` int(8) NOT NULL COMMENT '用户组ID',
  `username` varchar(25) NOT NULL COMMENT '账号',
  `password` varchar(100) NOT NULL COMMENT '密码',
  `nickname` varchar(100) DEFAULT NULL COMMENT '昵称',
  `sort` int(11) DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`uid`),
  KEY `group` (`gid`),
  KEY `usrname` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';
复制代码
复制代码

下面要用yii来做CURD操作。

yii2没有空模型,必须实体类来映射表,这点TP的ORM我比较喜欢。

复制代码
复制代码
<?php
// app/models/Admin.php  声明Admin模型,对应admin表
namespace app\models;
use yii\db\ActiveRecord;
class Admin extends ActiveRecord
{

}
复制代码
复制代码
复制代码
复制代码
<?php
// app/controller/IndexController.php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\Admin; //引入这个空间,下面才能调用静态方法
class IndexController extends Controller {
    public function actionIndex() {
        //db方法可以参考yii2\db\下面的很多数据库操作类,非常丰富
          $res=Admin::findAll(array('gid'=>1));
           var_dump($res);

    $query = Admin::find()->asArray()->all();//如果不想要取出来的数据时对象类型,可以用asArray方法转换成数组
    var_dump($query);

//插10条记录
        /* for($i=20;$i<=30;$i++){
          $admin=new Admin();
          $admin->gid=$i;
          $admin->username="admin".$i;
          $admin->password="admin".$i;
          $admin->nickname="findgor".$i;
          $admin->sort=$i;
          $admin->insert();//插入数据
          } */

        //修改
        /*$row=Admin::findOne(array("uid"=>19));//这是对于数据对象操作
          $row->username="test";
          $row->update(); */

        /* 删除
          $row=Admin::findOne(19);
          $row->delete();
         */
    }

}
复制代码
复制代码

 下面就是yii的特色菜GII了,快速生成代码,开启和关闭可以在入口文件中指定  yii_env执行环境。

跑:http://localhost/ibrain/web/index.php?r=gii

可以创建很多东西,先来个模型吧,model->start

可以预览生成的文件,使用很简单。参考:http://www.yiichina.com/doc/guide/2.0/start-gii

再来生成curd:也就是增删改查的代码,会自动生成页面。非常流弊
 
Model Class:                app\models\Info
 
Search Model Class:     app\models\InfoSearch
 
Controller Class:       app\controllers\InfoController
 
View Path:                   \views\info

好了,生成完后,我们可以访问一下,http://localhost/ibrain/web/index.php?r=info 

 

项目演练

很多东西是需要在做项目中才能发现的,带着问题才能更好的学习,但切记不要一遇到问题就钻牛角尖。

下面正式修改项目。首先把头部和尾部的修改一下吧。

尾部在布局文件中,\veiws\layout\main.php

<?= Yii::powered() ?> 这个在\yii2\BaseYii.php 465行 powered

登陆功能:

http://www.yiichina.com/tutorial/332

 =============================

在curd生成的页面中,默认的显示往往不足以满足我们,所以下面来改动一下。

看模板文件内的数据列表。

复制代码
复制代码
    <p>
        <?= Html::a('创建信息', ['create'], ['class' => 'btn btn-success']) ?>
    </p>

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [

            'id',
            'type',
            'title',
            'keyword',
            'content:ntext',
            
            ['class' => 'yii\grid\ActionColumn','header' => '操作', 'headerOptions' => ['width' => '100']],
        ],
       
    ]); ?>
复制代码
复制代码

 

1.Showing 1-5 of 39 items.  这个统计要改成中文,在基础列表视图类widget\BaseListView.php line:190

2.显示的标题要修改的话,可以在model写一个attributeLabels()方法

复制代码
复制代码
 public function attributeLabels()
    {
        return [
            'id' => '编号ID',
            'type' => '类型',
            'title' => '标题',
            'keyword' => '关键字',
            'content' => '内容',
        ];
    }
复制代码
复制代码

3.要改一页显示的条数,在生成的infosearch.php中添加配置

复制代码
复制代码
 public function search($params)
    {
        $query = Info::find();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pagesize' => '5',//一页显示5条数据
            ]
        ]);
复制代码
复制代码

 

Yii2使用教程_yii2 rbac

那么对一个单表的操作也差不多了,但是考虑后台的复杂性,往往会出现:

1.多表关联查询后的记录 

2.自定义搜索字段

3.增加字段操作,比如加一个审核。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166832.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 在安装twincat plc时,出现 there are some files marked for deletion on next reboot.please reboot first then

    在安装twincat plc时,出现 there are some files marked for deletion on next reboot.please reboot first then

    2022年2月1日
  • (数据库)数据库分类

    (数据库)数据库分类1.面向操作的关系型数据库典型性应用领域:ERP,CRM,信用卡交易,中小型电商数据储存方法:表格流行厂商:OracleDatabase,MicrosoftSQLServer,IBMDB2,EnterpriseDB(PostgreSQL),MySQL优点:完善的生态环境保护,事务保证/数据一致性缺点:严苛的数据模型界定,数据库拓展限制,和非结构型的结合应用较难。2.面向数据分析的关系型数据库典型性应用领域:数据仓库,商务智能,数据科学研究数据储存方法:表格流行厂商:OracleE

    2022年6月24日
  • linux中的ldd命令简介

    linux中的ldd命令简介在linux中,有些命令是大家通用的,比如ls,rm,mv,cp等等,这些我觉得没有必要再细说了。而有些命令,只有开发人员才会用到的,这类命令,作为程序员的我们,是有必要了解的,有的甚至需要熟练使用。有的人总说,这些命令不重要,用的时候去查就行了,这么多么扯淡的说法啊。具体用法细节是可以可查,但至少得知道有ldd这个东西吧。连ldd都不知道,怎么知道ldd是干啥的呢?

    2022年4月28日
  • linux 安装_weblogic部署Linux

    linux 安装_weblogic部署Linux下载直接去官网下:https://redis.io/download/#redis-downloads快速访问:redis官网通过xftp上传到Linux服务器上,这个应该大家都会。解压文件三、安装C++环境等待下载安装结束,验证:安装成功如图:修改以下两个配置项:1、配置后台运行2、配置允许远程访问文件夹目录下运行到此就运行成功啦~如果在其他服务器访问不到redis,大概率是防火墙没有开放6379端口,解决如下:完毕,谢谢~…

    2022年10月4日
  • C++面试题之浅拷贝和深拷贝的区别「建议收藏」

    C++面试题之浅拷贝和深拷贝的区别「建议收藏」先考虑一种情况,对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。先看一个例子,有一个学生类,数据成员时学生的人数和名字:#include&lt;iostream&gt;usingnamespacestd;classStudent{private: intnum; c…

    2022年10月1日
  • datagrip 2021.5激活码[在线序列号]

    datagrip 2021.5激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号