为了账号安全,请及时绑定邮箱和手机立即绑定

Yii框架不得不说的故事—基础篇(1)

withy PHP开发工程师
难度中级
时长 2小时39分
学习人数
综合评分9.67
175人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.4 逻辑清晰
  • //查询数据 // $sql="SELECT * FROM test"; // $results = Test::findBySql($sql)->all(); //id=1 // $results = Test::find()->where(["id"=>1])->all(); // print_r($results); //id>0 /*$results = Test::find()->where(['>','id',0])->all(); print_r($results);*/ //id>=1 and id<=2 //$results = Test::find()->where(['between','id',1,2])->all(); //echo count($results); //title like '%title%' //$results=Test::find()->where(['like','title','title'])->all(); //print_r($results); //将查询结果转换成数组 // $results=Test::find()->where(['like','title','title'])->asArray()->all(); //批量查询 foreach ($Test::find()->batch(2) as $value) { # code... } print_r($results);
    查看全部
  • 1.调用session组件 $session = \Yii::$app -> session; 2.判断session是否开启 if($session->isActive) { echo "Session is not acive"; } 3.开启session $session -> open; 4.设置session值 $session -> set('user','张三'); 5.获取session值 echo $session -> get('user'); 6.删掉session值 $session -> remove('user'); TIPS1:不同浏览器会产生不同的session,系统是根据sessionID来进行识别的 TIPS2: 即可通过对象的方式操作session,也可以通过数组的方式来操作session 通过数组方式来操作session $session['user'] = "张三";// 设置session值 echo $session['user']; //取出session数据 unset($session['user']);//通过unset 来删除session
    查看全部
  • 关联查询: use yii\db\ActiveRecord; class Customer extends ActiveRecord{//帮助顾客获取订单 public function getOrders(){ $result=$this->hasMany(order::className(),['customer_id'=>'id'])->asArray()->all(); return $result; } } 关联查询: hasMany:一对多,hasOne:一对一 $customer->orders; $customer当没有orders属性时,$customer自动调用_get()方法,拼接调用getOrders()方法,并自动在后面加上all()方法或者one()方法,至于何时自动拼接all或者one,取决于关联查询是用的hasMany还是hasOne,如果是hasMany则拼接all,否则反之。 //关联查询 //根据顾客查询她/他的订单的信息 // $customer = Customer::find()->where(['name'=>'zhangsan'])->one(); // $order = $customer->hasMany('app\models\Order',['customer_id'=>'id'])->asArray()->all(); // $orders = $customer->getOrders(); // $orders = $customer->orders; // print_r($orders); //根据订单查询顾客的信息 $order = Order::find()->where(['id'=>1])->one(); $customer = $order->customer; //以属性的方式获取数据 print_r($customer); 注:若使用以属性的方式获取数据,则在模型里面要定义一个方法,该方法要以get+属性的命名方式。
    查看全部
  • //数据模型之单表删除 //删除数据,先取出要删除的数据 /*$results = Test::find()->where(['id'=>1])->all(); $results[0]->delete();//调用delete()方法就可以删除第一条数据*/ //删除数据有个更快捷的方式:调用控制器当中的deleteAll()方法把整个表里的数据删掉;同时这个方法里也可以带上查询条件指定删除哪部分的数据。 //Test::deleteAll('id>0'); Test::deleteAll('id>:id',array(':id'=>0));//deleteAll也支持占位符的功能
    查看全部
  • //视图之数据安全 //在$hello_str的值后边加上一段js代码,在浏览器刷新页面时,js代码被当成真的js代码显示出来。 //这样会产生问题,假如$hello_str是从用户那边传递过来的,用户以请求的方式发送了一段内容(含有js代码),这样就真的放在视图里去显示了。 //那么如果在js代码中用户放进了一些恶意代码,就会造成跨站脚本攻击,从而危害到安全。Yii框架提供了一些专门的工具来防止这些问题的发生。 $hello_str = 'Hello God!<script>alert(3);</script>'; $data = array(); $data['view_hello_str'] = $hello_str; return $this->renderPartial('index',$data); <!-- 视图之数据安全 --> <!-- Yii提供了一个工具类Html(在命名空间中的类,需要通过php代码去告诉应用程序去使用yii\helpers\Html;下的这么一个类),类中有一个方法encode(可以对这个变量当中的js代码进行转义) --> <?php use yii\helpers\Html; use yii\helpers\HtmlPurifier; ?> <h1><?=Html::encode($view_hello_str);?></h1> <!-- js代码会被原样的显示出来 --> <!-- 除了通过转义的方式去避免跨站脚本攻击之外,还可以通过另外一个类HtmlPurifier去过滤js代码 --> <h1><?=HtmlPurifier::process($view_hello_str);?></h1> <!-- process方法可以把变量里的js代码给彻底过滤掉 -->
    查看全部
  • // 从"response"组件中获取cookie 集合(yii\web\CookieCollection) $cookies = Yii::$app->response->cookies; // 在要发送的响应中添加一个新的cookie $cookies->add(new \yii\web\Cookie([ 'name' => 'language', 'value' => 'zh-CN', ])); // 删除一个cookie $cookies->remove('language'); // 等同于以下删除代码 unset($cookies['language']);
    查看全部
  • ​models的"test.php" 一定对应数据库中的test表????
    查看全部
  • 1.ActiveRecord(活动记录类) (1)方法:findBySql()继承之父类的,结果返回一个对象(放在数组当中) 2.SQL入侵 (1)占位符:(:id),加载Sql语句后面 (2)在findBySql($sql,array())数组中赋值。由于array()会把用户传递过来的值作为一个整体去处理, (3)findBySql防止SQL注入 // $sql='select * from Test where id=:id '; // $result=Test::findBySql($sql,array(':id'=>2))->asArray()->all();//findBySql第二个参数设置占位符 $sql='select * from Test where id=:id '; $result=Test::find($sql)->where(['id'=>3])->asArray()->all();//findBySql第二个参数设置占位符 p($result);
    查看全部
  • 路由中的r=hello不能像写类一样用大写Hello ..否则找不到相应的控制器。
    查看全部
  • 关联查询: hasMany:一对多,hasOne:一对一 $customer->orders; $customer当没有orders属性是,$customer自动调用_get()方法,拼接调用getOrders()方法,并自动在后面加上all()方法或者one()方法,至于何时自动拼接all或者one,取决于关联查询是用的hasMany还是hasOne,如果是hasMany则拼接all,否则反之。
    查看全部
  • 联表查询关联id先后关系,注意一下
    查看全部
  • 刚开始看第一遍的时候一直对老师说的数据块作用是把common中的<h1>hello Common</h1>给覆盖掉,可是老师在视频中明明是直接把那一句给直接注释掉的,完全没有起到覆盖的作用。后来看第二遍的时候,才明白,其实是老师说的不精确,老师的意思其实应该是指如何在common的模板文件中利用视图文件(index.php)中定义的数据块来灵活的实现在common模板中起到占位,且还可以根据条件判断是否需要显示数据块内容的作用
    查看全部
    2 采集 收起 来源:视图之数据块

    2018-03-22

  • 视图——布局文件 学习目的:使我们今后的能够精简程序的代码 学习准备:创建一个common.php 公共布局文件,把要公用的代码先放进去(这里以常用html基础代码为例) 使用原理: 1.先通过系统内置属性$layout指定调用的公共布局文件 public $layout = 'common'; 2. 通过yii内置方法render('要显示的内容');将要显示的内容能够存入yii系统内置变量$content中 return $this ->render('about'); 3. 在公共布局文件中调用这个$content变量 <?=$content;?>
    查看全部
  • $request = \YII::$app->request;<br> $request->get/post('id',20);第二个参数是默认的 $request->isGet 判断是否是get请求 通过请求组件可以获取用户的一些信息 如:ip $request->userIp;
    查看全部
  • 防止js投机的两种方法,要不让他原形毕露,要不销声匿迹
    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
学习本门课程之前,建议先了解一下知识,会更有助于理解和掌握本门课程 1、掌握PHP基本的语言语法 2、对MVC开发方式有一定的了解
老师告诉你能学到什么?
1、php的新特征 2、一款前沿的框架的使用方式 3、新颖独到的程序设计

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!