YII安装和使用

一、下载安装

http://www.phperz.com/article/14/1211/40633.html

解决证书错误

http://my.oschina.net/yearnfar/blog/346727

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

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

其中前面步骤都是安装composer的东西。若安装了composer可以直接到第六步

下载安装包安装

http://pandaju.me/article/177

安装basic时,访问index出错,需要在config中的web.php配置 ‘cookieValidationKey‘ => ‘huwei‘,

二、使用

1、基础篇

命名空间

不带命名空间的类为全局类,使用时带“\”

声明命名空间

  1. namespace tests\b;
  2. class apple{
  3. function get_info(){
  4. echo "this is b";
  5. }
  6. }

使用命名空间

  1. require_once("a.php");
  2. require_once("b.php");
  3. require_once("c.php");
  4. use tests\a\apple;
  5. use tests\b\apple as bApple;
  6. $a=new apple();
  7. $a->get_info();
  8. echo "<br/>";
  9. $b=new bApple();
  10. $b->get_info();
  11. echo "<br/>";
  12. $c=new \Apple();//全局类
  13. $c->get_info();

请求组件

  1. //请求组件
  2. $request=YII::$app->request;
  3. echo $request->get(‘id‘,20);//get 两个参数,若第二个参数不传,
  4. echo $request->post(‘id‘,20);//get 两个参数,若第二个参数不传,
  5. if($request->isGet){
  6. echo "this is get method";
  7. }

响应组件

  1. //响应组件
  2. $response=Yii::$app->response;
  3. $response->statusCode=‘404‘;
  4. $response->headers->add(‘pragma‘,‘no-cache‘);
  5. $response->headers->add(‘pragma‘,‘max-age-5‘);
  6. $response->headers->remove(‘pragma‘);
  7. //自动跳转
  8. //$response->headers->add(‘location‘,‘http://www.baidu.com‘);
  9. //$this->redirect(‘http://www.baidu.com‘,302);
  10. //文件下载
  11. //$response->headers->add(‘content-disposition‘,‘attachment;filename="a.jpg"‘);
  12. $response->sendFile(‘./robots.txt‘);

session组件

  1. //session组件
  2. //一个浏览器不能使用另外一个浏览器保存的session
  3. $session=YII::$app->session;
  4. //开启session
  5. //将session保存在php.ini中设置好的路径 session.save_path = "C:/wamp/www/tmp"
  6. $session->open();
  7. if($session->isActive){
  8. //添加session
  9. // $session->set(‘user‘,‘huwei‘);
  10. //使用session
  11. echo $session->get(‘user‘);
  12. //删除session
  13. $session->remove(‘user‘);
  14. //使用数组进行session使用
  15. $session[‘user‘]=‘huwei‘;
  16. unset($session[‘user‘]);//去除数组
  17. }

视图

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: huwei
  5. * Date: 2015/10/14
  6. * Time: 21:08
  7. */
  8. namespace app\controllers;
  9. use yii\web\controller;
  10. use yii;
  11. use yii\web\Cookie;
  12. classIndexControllerextendsController{
  13. //使用布局文件
  14. public $layout=‘common‘;
  15. publicfunction actionGrid(){
  16. $hello=‘hello_grid<script>alert(111);</script>‘;
  17. $arr=array(1,2);
  18. $data=array();
  19. $data[‘view_str_hello‘]=$hello;
  20. $data[‘view_arr_arr‘]=$arr;
  21. return $this->render(‘grid‘,$data);
  22. }
  23. }
  1. <?php
  2. use yii\helpers\Html;
  3. use yii\helpers\HtmlPurifier;
  4. ?>
  5. tihs is grid
  6. <!--数据安全-->
  7. <h1><?=Html::encode($view_str_hello)?></h1><!--解码script-->
  8. <h1><?=HtmlPurifier::process($view_str_hello)?></h1><!--过滤script-->
  9. <?php
  10. //数据传递
  11. $str="<table>";
  12. foreach($view_arr_arr as $k){
  13. $str.="<tr><td>".$k."</td>";
  14. $str.="</tr>";
  15. }
  16. $str.="</table>";
  17. print $str;
  18. ?>
  19. <?php
  20. //在视图文件中打开另一个视图文件并传值
  21. $data=array();
  22. $data[‘view_str_hello‘]=$view_str_hello;
  23. echo $this->render(‘add‘,$data);
  24. ?>
  25. <!--使用数据块-->
  26. <?php $this->beginBlock(‘block1‘);?>
  27. <h1>this is grid block</h1>
  28. <?php $this->endBlock();?>
  1. <!DOCTYPE html>
  2. <html>
  3. <headlang="en">
  4. <metacharset="UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <h1>this is common</h1>
  9. <!--使用数据块-->
  10. <?php if(isset($this->blocks[‘block1‘])):?>
  11. <?=$this->blocks[‘block1‘];?>
  12. <?php else:?>
  13. <h1>this is common11</h1>
  14. <?php endif;?>
  15. <?=$content?>
  16. </body>
  17. </html>

数据模型

  1. publicfunction actionIndex(){
  2. //查询数据
  3. //通过原生sql语句
  4. //http://www.yiichina.com/doc/api/2.0/yii-db-query#where%28%29-detail
  5. $sql=‘select * from user where is_delete=:is_delete‘;//:is_delete是个占位符 防止sql注入
  6. $data=User::findBySql($sql,array(‘:is_delete‘=>0))->all();
  7. //通过内置方法
  8. $data=User::find()->where([‘is_delete‘=>0])->all();
  9. //查询结果转换为数组
  10. $data=User::find()->where([‘is_delete‘=>0])->asArray()->all();
  11. //批量查询 一次查询10条数据
  12. foreach(User::find()->batch(10)as $userData){
  13. //print_r($userData);
  14. }
  15. //删除数据
  16. $data=User::find()->where([‘is_delete‘=>1])->all();
  17. //删除单条
  18. //$data[0]->delete();
  19. //删除满足条件的所有数据
  20. User::deleteAll(‘is_delete=:is_delete‘,array(‘:is_delete‘=>1));
  21. //添加数据
  22. $user=newUser();
  23. $user[‘name‘]=‘sd‘;
  24. $user[‘account_id‘]=1;
  25. $user->save();
  26. //修改数据
  27. $data=User::find()->where([‘id‘=>1])->one();
  28. $data[‘name‘]=‘胡伟‘;
  29. $data->save();
  30. //关联查询
  31. //根据用户查找帐号信息
  32. //最好封装在model中
  33. $user=User::find()->where([‘is_delete‘=>0])->all();
  34. $account= $user[0]->hasMany(‘app\models\Account‘,[‘id‘=>‘account_id‘])->asArray()->all();
  35. $account= $user[0]->hasMany(Account::className(),[‘id‘=>‘account_id‘])->asArray()->all();
  36. //只要在User的model中封装了getAccounts便可这样使用
  37. //等同于调用getAccounts()方法
  38. $account=$user[0]->account;
  39. //关联查询的结果会被缓存
  40. //关联查询的多次查询
  41. //select * from user
  42. //select * from account where id in (...)
  43. $user=User::find()->with(‘account‘)->all();
  44. //等同于
  45. $user=User::find()->all();
  46. foreach($user as $u){
  47. $account=$u->account;
  48. }
  49. print_r($user);
  50. return $this->render(‘index‘);
  51. }
  1. classUserextendsActiveRecord{
  2. //合法性验证
  3. //http://www.yiichina.com/doc/guide/2.0/tutorial-core-validators
  4. publicfunction rules(){
  5. return[
  6. [‘account_id‘,‘integer‘],
  7. [‘name‘,‘string‘,‘length‘=>[0,5]]
  8. ];
  9. }
  10. publicfunction getAccount(){
  11. //hasOne
  12. $account= $this->hasMany(Account::className(),[‘id‘=>‘account_id‘])->asArray();
  13. return $account;
  14. }
  15. }

2、工具篇

composer

在window下安装了composer后,配置好了环境变量就可以直接使用composer了。

在每个程序包中都配置好了composer.json ,在该文件中配置好需要的程序包,第一次,使用install便可下载所有的特定的依赖包,之后便可以使用update命令来更新程序包了。

create-project 创建程序项目

使用composer镜像

1.

在命令行中使用

composer config -g repositories.packagist composer http://packagist.phpcomposer.com

2.在composer.json下面添加

  1. "repositories":[
  2. {"type":"composer","url":"http://packagist.phpcomposer.com"},
  3. {"packagist":false}
  4. ]

debug工具

可以用composer require yiisoft/yii2-debug 2.0.5进行下载

不过在YII2自带的composer.json中也有dubug工具的更新

http://localhost:81/basic/web/index.php?r=debug中可以查看访问请求的所有信息

性能监视

在Database中可以查看数据库操作的执行时间等情况,

在profiling中可以记录程序某个片段的执行时间等情况。

片段使用方法

  1. yii::beginProfile(‘profile1‘);
  2. echo ‘hello profile‘;
  3. sleep(1);
  4. yii::endProfile(‘profile1‘);

gii工具

http://localhost:81/basic/web/index.php?r=gii

YII场景

  1. publicfunction actionGii(){
  2. $test=newGiiTest;
  3. //指定需要加载的场景,使用load方法将该值赋给该对象的属性
  4. //只有在场景中申明的才能赋予
  5. //实际用于增加和修改的不同操作
  6. $test->scenario=‘scenario2‘;
  7. $testData=[
  8. ‘data‘=>[‘id‘=>3,‘title‘=>‘hello word‘]
  9. ];
  10. $test->load($testData,‘data‘);
  11. $test->title=‘title4‘;
  12. $test->save();
  13. echo $test->title;
  14. print_r($test->id);
  15. }
  1. publicstaticfunction tableName(){
  2. return‘gii_test‘;
  3. }
  4. //创建场景
  5. publicfunction scenarios(){
  6. return[
  7. ‘scenario1‘=>[‘id‘,‘title‘],
  8. ‘scenario2‘=>[‘id‘]
  9. ];
  10. }

CRUD Generator(CRUD生成器)

便可以生成GiiTest的CRUD操作,不过访问方式是gii-test

在进行增加和修改操作时需要给其添加场景

Form Generator

生成之后在控制器中使用该部件,不过需要传递一个model给它

  1. publicfunction actionPublic(){
  2. $model=newGiiTest();
  3. return $this->renderPartial(‘/article/public‘,[‘model‘=>$model]);
  4. }

Widget工具(部件)

部件创建

  1. classTopMenuextendsWidget{
  2. publicfunction init(){
  3. parent::init();
  4. echo ‘<ul>‘;
  5. }
  6. publicfunction run(){
  7. return‘</ul>‘;
  8. }
  9. publicfunction addMenu($menuName){
  10. return‘<li>‘.$menuName.‘</li>‘;
  11. }
  12. }

使用

  1. use app\components\TopMenu;
  2. ?>
  3. <div>
  4. <?php $menu=TopMenu::begin();?>
  5. <?=$menu->addMenu(‘menu1‘);?>
  6. <?= $menu->addMenu(‘menu2‘);?>
  7. <?php TopMenu::end();?>
  8. </div>
时间: 2024-10-12 20:32:58

YII安装和使用的相关文章

yii安装 /You don&#39;t have permission to access on this server

在安装yii的时候 ,当打开了init.bat进行配置的时候小黑本弹出了个小黑框立刻就关闭了,  进入cmd模式再打开init.bat就出现了"You don't have permission to access  on this server"的这个错误,后来综合网上的各个文章,找到了造成了这个问题的原因主要有三个 1 php的permission扩展配置没有开 , 我用的是phpStudy在php-5.6.27-nts里面的配置文件里把去掉extension=php_openss

Yii安装时会出现的问题

今天打算学习一下Yii,但是在安装过程中出现了很多问题. 通过composer安装: composer global require "fxp/composer-asset-plugin:~1.1.1" composer create-project --prefer-dist yiisoft/yii2-app-basic basic 第一条命令安装 Composer asset plugin,它是通过 Composer 管理 bower 和 npm 包所必须的,此命令全局生效,一劳永

Yii 安装

// 安装 composer curl -s http://getcomposer.org/installer | php // 把 composer 添加到全局命令 mv composer.phar /usr/local/bin/composer // 安装 Composer asset plugin composer global require "fxp/composer-asset-plugin:1.0.0-beta4" // 把 Yii 安装到目录 /data/test.co

yii2框架学习一 yii安装与常见问题

1 安装安装有两种  cpmposer 喝归档文件 安装  这里采用的归档文件安装    归档文件安装分为两种 基础末班和高级模板,这里采用高级模板  在官网或者yii-china 下载归档文件  解压到更目录 2 配置环境变量 记住是php的环境变量这里我用的是这个拷贝 这段路径,然后配置环境变量 3 在dos 运行init.bat 和 yii.bat  直接拖拽过去即可没有南无复杂 如果没有自动运行就 按下enter键  注意这里需要开启openssl  如果确认开启还是提示报错,则用编辑器

Yii安装使用教程(转)

Yii 是一个基于组件的高性能 PHP 框架,用于快速开发大型 Web 应用.它使Web开发中的 可复用度最大化,可以显著提高你的Web应用开发速度.Yii 这个名字(读作易(Yee) 或 [ji:])代表 简单(easy), 高效(efficient) 和 可扩展(extensible). 中文帮助:http://www.yiiframework.com/doc/guide/1.1/zh_cn/quickstart.what-is-yii 一.下载yiiframework,当前最新版本是1.1

YII安装教程-第一节

YII的安装非常简单,直接进入YII中国官网下载安装包解压到本地即可,比较简单,几个简单的截图如下: 下载地址:https://www.yiichina.com/download 下载到本地的压缩包解压到本地的web目录 解压出来的文件夹为basic ,我是直接把basic直接放在web更目录调试的. 直接访问 requirements.php 文件,查看本地环境状态是否符合YII要求.php版本要求 5.4以上,下面验证通过截图 上图中验证全部通过表示表示条件符合.到此YII本地服务器安装基本

Yii 安装二维码扩展Qrcode

比如要添加 https://github.com/2amigos/yii2-qrcode-helper 生成二维码的 这个扩展第一种方法 :    1.打开根目录的composer.json, 在require那里加上 "2amigos/yii2-qrcode-helper" : "~1.0",如图    "require": { "php": ">=5.4.0",     "yiisoft

Yii在window下的安装方法

首先,在http://www.yiichina.com/上下载yii 然后,配置系统环境变量,在win8下,按win+x,找到系统->高级系统设置->环境变量->path 把php的运行环境,加入到环境变量中,以分号隔开.如,我的是D:\wamp\bin\php\php5.4.12 在运行中输入php命令,会出现闪烁的下划线,说明环境变量配置成功. 最后,切换到yii目录下的framework目录下,执行下面的命令: php  yiic webapp  ../my_pro--------

【Yii系列】Yii2.0的安装与调试

接上一节的话,我们最终选择了Yii框架作为我们的主要开发框架,今天,我就和大伙来聊聊如何安装与调试Yii2.0,以及后续会和大伙聊聊如何在Yii2.0上快速撸代码. Yii2.0的安装 好的,Composer这个利器我们在[http://www.cnblogs.com/riverdubu/p/6444403.html]这一章节中已经讲了如何安装,今天我们就要开始安装我们的Yii2.0源码啦. 切换到一个可通过 Web 访问的目录,执行如下命令即可安装 Yii : $composer global