您的位置:首页 > 编程语言 > PHP开发

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

2015-06-09 23:46 816 查看
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' => \yii\filters\AccessControl::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' => \yii\filters\AccessControl::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();
},
],
];
}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: