牛骨文教育服务平台(让学习变的简单)
博文笔记

yii中的几项基本操作(布局、指定访问方法、解决400错误)

创建时间:2016-08-11 投稿人: 浏览次数:953

1、如何去除yii框架自带的布局?

       在yii框架中,有一个全局的布局文件/views/layouts/main.php,在这个文件中可以写整个框架的布局。可是在很多种情况中,大家都不想看到yii自带的样式,于是我们就需要对他的布局有所操作。

     其实很简单,只需要删除这个文件中的所有代码,只留一句<?=$content ?>

2、如何让yii访问web文件时到指定的方法?

   yii框架中找到配置文件夹config,在这个文件夹下面有个web.php文件。举例说明一下:

//<?php

//$params= require(__DIR__. "/params.php");

//$config = [

                    "defaultRoute"=>"vb/login",//添加一项这个,vb是要跳转的控制器,login是要跳转的方法名

                      .....

3、如何解决yii中的400表单提交错误?

提交表单报400错误,提示 “您提交的数据无法验证”
原来是csrf验证的问题,因为表单是自己写的,在Yii框架中,为了防止csrf攻击,对post的表单数据封装了CSRF令牌验证。
解决办法关闭csrf验证
方法一、在配资文件中关闭

"components"=>array(
        "request"=>array(
            // Enable Yii Validate CSRF Token
            "enableCsrfValidation" => true,
        ),
),

使用Yii表单生成页面的时候,如果表单的提交方式为POST,是都会在页面中添加一个隐藏字段,这个隐藏字段就是CSRF令牌验证字段
用户在提交表单的同时,将该字段提交给服务器端,Yii框架会将该有客户端提交过来的隐藏字段和客户端提交过来的Cookie中的YII_CSRF_TOKEN值进行比较。
相同则通过继续执行,不相同则会抛出400异常:"The CSRF token could not be verified."。
所以就出现了上面的问题,如果是自己写的表单,可以在视图页面的表单添加隐藏的令牌验证字段
方法二、在表单中增加隐藏的验证字段

<input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">

如果不想csrf验证就将方法一的true修改为false,这样YII就不会做post表单验证处理。






声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。