新建了一个modules 程序默认走的Default控制 怎么设置让它默认访问Set 控制器呢
在你的 IndexModules.php
加上
这行代码,即可。
见: vendor/yiisoft/yii2/base/Module.php
新建了一个modules 程序默认走的Default控制 怎么设置让它默认访问Set 控制器呢
在你的 IndexModules.php
加上
这行代码,即可。
见: vendor/yiisoft/yii2/base/Module.php
对于一些js css image这类的一般使用一个单独的文件夹存放,如assets 或者 static 文件夹集中存放,那么如果定义此路径信息,还有如果使用独立的域名的话,又应该如何设置的。我下载的官方实例,没有找到在哪里设置这个的,只找到AppAsset.php文件,也看了官方的文档http://www.yiichina.com/doc/guide/2.0/structure-assets
这里@webroot和@web系统预定义别名,只是没有找到在哪个地方设置的静态资源使用 web/asset/xxxx 目录。
<link href="/assets/cec35f56/css/bootstrap.css" rel="stylesheet">
直接给你源码你明悟吧
public function actionIndex(){
$student = Student::model()->findAll();
usort($student,'sortByCreateTime');
}
public function sortByCreateTime($a,$b){
return $a->create_time>$b->create_time?1:-1;
}
这样写报找不到该方法的错误?有人知道怎么用吗?
usort($student, array($this, 'sortByCreateTime'));
试试
没用过这函数,看了一下手册,不知道是不是第一个参数要传引用。\usort($student,'sortByCreateTime');
函数名称前把你的命名空间带上
在使用Gii生成CURD过程中。
viewpath填写成@app\views\resource就好了
如果你控制器的命名空间是api\controller,那么路径用api\views别用app
@app/views/resource 这样些是可以的 我也遇到了这个问题 也是生成到了web的目录下面了 最后在viewpath路径里加个@ 然后再把\改成/ 就可以了
YII怎么使用filters? 想要在执行每个action之前,都执行一段代码。
例如,加载权限,添加日志。怎么弄。请各位大大指导!
在Controller里面加一个beforeAction就可以了,所有action执行前都会调用这个方法先的
可以预先建立一个父类,在父类中进行控制
权威手册:“Pjax: TBD link to demo page” ,不理解。给点指导,有相关教程么 ?谢谢!
如果不采用类似 $model->find('id=:id', [':id'=>1])
,而是直接采用 $model->find('id=1')
的写法可以防止注入攻击吗?
访问地址
代码如下
结果返回
可以看到YII自动进行了SQL防注入,所以是安全的
如果id是在程序里写死的,不是外部传递来的,那么$model->find(‘id=1’)这么写是可以的;
但是id一般都是从外部传递的,所以model->find(‘id=1’)是有风险的
请教个问题Yii2里面怎样通过一个标签的name值获取他的id值 就类似于Yii1里面的getIdByName这个
yii\helpers\BaseHtml
里面有一个getInputId
方法类似Yii1的resolveNameID
。
不过,不是很清楚你想问的是什么?
是通过js获取吗?
如果是js试试这个:
AR中有很多方法。
比如
model->findone(['id'=>1]);
请问这个查询,yii是否进行了参数化?
再比如
model->find()->where(['in','id','1,3,6']);
同上,现在自己写点小东西,越写心里越没谱,还希望有经验的帅哥们指导下,谢谢,如果上述方法框架自身没有进行参数化,那么现在趁早就全部改用参数方式来写了。免得最后害死人。
yii\db\Command.php
里面在createCommand的时候,会默认用bindValue对参数进行处理,所以你可以放心的用上述写法而不用担心注入问题。
这个你不用担心啊,Yii的AR对sql注入的预防做的挺好的,而且本来就是基于PDO的
Yii自带的AR操作底层是基于pdo进行实现的,sql注入的问题不必担心,但是自己写sql之类的还是要很谨慎,建议用占位。参考博文 yii过滤xss代码,防止sql注入教程
view中
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['attribute'=>'audio', 'format'=>'html', 'value'=>function($model){
return '<div><audio controls=""><source src="https://www.yiichina.com/question/935'.WEBURL.$model->audio.'" type="audio/mp3"></audio></div>';
}],
],
]); ?>
但最终显示
<td><div></div></td>
audio标签没有了,如果不用GridView直接写audio标签是没问题的。小伙伴们有没有遇到过?
这里的value
换成content
试试。
看了下DataColumn
的实现,如果设置value而非Column
的content属性时,DataColumn会默认调用$this->grid->formatter->format
对内容进行格式化。
至于为啥过滤掉你的audio标签,可能是你的写法不符合w3c标准?参考w2c School提供的案例:http://www.w3school.com.cn/html5/html5_audio.asp
配置有问题,请参考样例:
http://www.yiichina.com/doc/api/2.0/yii-grid-gridview#$columns-detail