入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Yii2使用过程中一些小技巧的总结

创建时间:2015-06-09 投稿人: 浏览次数:130

1、yii2视图中渲染到另一个视图中

<?php echo Yii::$app->view->renderFile("@app/views/newView/index.php", [ "model" => $model ]); ?>


2、yii2将参数传递到layouts/main.php中

//设置当前view的params参数,
$view = Yii::$app->view;
$view->params["layoutData"]="test";


3、yii2在视图内进行渲染

<span style="font-family: Arial, Helvetica, sans-serif;"><?php echo Yii::$app->view->renderFile("@app/views/permission/_form.php", [ "model" => $model ]); ?></span>


4、yii2使用下拉框设置默认值以及默认选中

echo $form->dropDownList($model, "selectid", array("1"=>"a","2"=>"b","3"=>"c"), array("class" => "form-control", "prompt" => "请选择", "options" => array("key"=> array("selected" => true) )));


5、yii2checkboxList小部件默认选中

$items、$options都是数组格式
$items是要显示的checkbox  
<span style="font-size:14px;">array("0"=>"足球", "1"=>"篮球","2"=>"排球")</span>
$options是你默认选中的值
<span style="font-size:14px;">array("0"=>1)</span>
<span style="font-size:14px;"><?= $form->field($model, "chechkbox")->checkboxList($items,$options)->label(false) ?></span>


6、yii2自带的下载功能

    /*
     * 下载
     */
    public function actionDownload($id){
        if ( isset($_GET["id"]) ) {
            $model = new Model();//你的model
            $result = $model->find(array(
                "select" => array("字段1", "字段2"),
                "condition" => "id=:id",//条件
                "params"    => array(":id" => $id)
                ));
            if (!$result) {
                throw new CHttpException(404, "文件不存在!");
            }
            else {
                // 服务器端文件的路径
                $fontArr  = explode("/", $result->url);
                $fileName = end($fontArr); //得到文件名字
                if (file_exists($result->url)){
                    //发送两个参数一个是名称上面已经处理好,也可以改成你要的,后面是文件路径
                    yii::app ()->request->sendFile ($fileName,  file_get_contents ($result->url));
                }
            }
        }
    }

    如果你不需要查数据库的话直接做参数传递就好了
    yii::app ()->request->sendFile (文件名,  file_get_contents (文件路径));


7、在Yii2的控制器的访问拒绝(即access deny)之后怎么设置flash提示信息

如下:

public function behaviors()
{
    return [
        "access" => [
            "class" => yiifiltersAccessControl::className(),
            "only" => ["create", "update"],
            "rules" => [
                // deny all POST requests
                [
                    "allow" => false,
                    "verbs" => ["POST"]
                ],
                // allow authenticated users
                [
                    "allow" => true,
                    "roles" => ["@"],
                ],
                // everything else is denied
            ],
        ],
    ];
}
如上代码,当用户没登录的时候,将会跳转到site/login,现在的问题是想要不跳转,而是显示信息‘你没有访问的权限’,那么代码设置如下:

public function behaviors()
{
    return [
        "access" => [
            "class" => yiifiltersAccessControl::className(),
            "only" => ["create", "update"],
            "rules" => [
                // deny all POST requests
                [
                    "allow" => false,
                    "verbs" => ["POST"]
                ],
                // allow authenticated users
                [
                    "allow" => true,
                    "roles" => ["@"],
                ],
                // everything else is denied
            ],
            "denyCallback"  => function ($rule, $action) {
                Yii::$app->session->setFlash("error", "This section is only for registered users.");
                Yii::$app->user->loginRequired();
            },
        ],
    ];
}


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。