Yii

今天想下载yii框架 用composer下载一直不行 于是直接下载别人安装好的包 地址:http://download.csdn.net/download/u014175572/9253791

安装完遇见了2个问题
1:由于权限不够 不能创建logs文件夹
2:报错:ii\web\Request::cookieValidationKey must be configured with a secret key. 解决:打开文件config\web.PHP, 设置 ‘cookieValidationKey’ => ‘true’,即可
3.The directory is not writable by the Web process: /usr/share/nginx/html/web/assets
解决:在basic/web/ 下 执行
chmod -R 777 assets/

安装完成后 使用
config/web.php modules开启gii

 $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1', '192.168.*.*', '182.254.226.246'],//允许访问gii的IP
    ];

命名空间
控制器的:namespace app\controllers;
控制器的命名,需要以controller单词为结束;
方法小写开头 action结束
路由中的r=hello不能像写类一样用大写Hello ..否则找不到相应的控制器。

模型的:namespace app\models; use yii\web\Controller;

控制器继承Controller 模型继承ActiveRecord use yii\db\ActiveRecord;

模板渲染“`
可以不继承模板的2种方式
1使用 renderPartial 而不是render
2 使用render 但是在前面加上 $this->layout=false;

变量赋值到模板
 return $this->renderPartial('index',array("row"=>$data));

公共模板设置在layout
views/layouts/布局文件
使用 <?php echo $content ?> 表示非公共模板

不加任何参数时候默认访问的控制器
在框架vendor\yiisoft\yii2\web\Application.php 里修改public $defaultRoute = 'site';
也可以在配置文件中增加    'defaultRoute' => 'site',

一应用主体\YII::$app 
(一)请求组件
1.获取post get参数
获取get参数为id的值 若不存在 则返回20
 \Yii::$app->request->get('id',20);
 获取post参数为id的值 若不存在 则返回20
 \Yii::$app->request->post('id',20);
 2.判断请求类型
 \Yii::$app->request->isPost
 \Yii::$app->request->isGet
\ Yii::$app->request->isAjax
3.获取用户信息
\Yii::$app->request->userIP
\Yii::$app->request->userAgent

(二)响应组件

1.设置状态码
\Yii::$app->response->statusCode = '404’
①缓存
 Yii::$app->response->headers->set('pragma','no-cache')
   Yii::$app->response->headers->add('pragma','no-cache')
    Yii::$app->response->headers->remove('pragma');
Yii::$app->response->headers->add('location','baidu.com')或者
 $this->redirect('baidu.com')
   ③下载
     \ Yii::$app->response->headers->add('content-disposition','attachment;filename="a.jpg"');
     \ Yii::$app->response->sendFile(../..a.jpg)
     (三)session组件
     判断session是否开启
$session->isActive;
    php  arrayAccess 接口  可以把对象当做数组使用
    yii中session组件 继承了arrayaccess  。    
    服务器可以区分不同浏览器的session请求
1.开启session
$session->open();
2.设置session
$session->set('user','张三');  (对象的形式)
$session['user'] = '张三';(因为arrayaccess 所以可以数组的形式 )
3.获取session
$session->get('user','张三');
$session['user'];
4.删除session
$session->remove('user'); 
unset($session['user'] );
    TIPS1:不同浏览器会产生不同的session,系统是根据sessionID来进行识别的
TIPS2: 即可通过对象的方式操作session,也可以通过数组的方式来操作session

(四)cookie组件
浏览器响应的时候添加cookie,请求的时候获取cookie
// 添加cookie
use yii\web\cookie;
$cookies = \YII::$app->response->cookies;
$cookie_data = array('name'=>'user', 'value'=>'zhangsan');
$cookies->add(new Cookie($cookie_data));

// 删除cookie
$cookies->remove('user');

获取请求时cookies
$cookies = \YII::$app->request->cookies;
$cookies->getValue('user', DefaultNullValue);

二控制器

三 视图

1.Controller和View关联
(1)控制器中:
调用一个renderpartial()方法,这个方法是基类Controller中的方法
这里使用$this这个关键字调用。
(2)renderpartial(“parm”),参数表示要显示那个视图文件,当然yii还规定了要显示视图,必须在前面加一个return语句:
完整语句:return $this->renderpartial(“parm”);
(3)别的都叫方法,yii中就得叫动作。
4)render()和renderPartial()区别:renderPartial不加载任何layouts,而render刚好相反。
(5)把变量赋值到模板:
所所有需要渲染的变量放在一个数组中
然后 在模板中 <?php  echo $+上述数组中的key  ?> 就可以了
例如
$date['view_hello_str']=$hello;
return $this->renderPartial(“index”,$date)
<?php  echo $view_hello_str  ?>

(6)视图安全
①把控制器中的js代码转义
在视图中如下操作
<?php use yii\helpers\Html; ?>
<h1><?=Html::encode($view_hello_str);?></h1>  (js代码会被原样的显示出来 )
①把控制器中的js代码去掉
<?phpuse yii\helpers\HtmlPurifier; ?>
<h1><?=HtmlPurifier::process($view_hello_str);?></h1> ( process方法可以把变量里的js代码给彻底过滤掉 )

(7) 公共模板
render 首先把视图模板放到一个名为$content的变量里
所以要在公共模板中加入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值