![]()
我本地环境是 wampsever php是7.0.0版本的 ,请问各位大佬怎么把调试输出时候显示的绝对路径 去掉啊?
php.ini
关闭debug
关掉xdebug
![]()
我本地环境是 wampsever php是7.0.0版本的 ,请问各位大佬怎么把调试输出时候显示的绝对路径 去掉啊?
php.ini
关闭debug
关掉xdebug
yii2 没有登录就会跳site/login,怎现在怎么关掉这个登录功能?
这里输入代码
‘user’ => [
‘user’ => [
‘loginUrl’=>null,
将配置文件里面的loginUrl属性设置为空,就可了
controller 里面取消 AccessControl 那部分代码,也可以自己写一段代码控制这部分逻辑,再或者按照上面这样配置 User相关参数。
将你的控制器的behaviors方法删掉就可以了,这样每个方法都可以免登录访问
site控制器里有个behaviors方法,它做了一些验证,改写规则或者删掉都行
在控制器里加上 public $enableCsrfValidation=false;
先上代码
![]()
![]()
点击页面上的一个按钮会调用ajax访问控制器,我加了个csrf验证判断,如果页面不刷新csrf不会发生变化,那始终验证都是yes。要是使用者用这个固定csrf和不同的id请求这个接口,就会修改其它的记录。我应该怎么防止这种情况呢?
你的担心完全是多余的。
CSRF 是其他站点利用你使用的 A 浏览器登录的 B 网站所保存的 去伪造请求发送给 B 网站。
很显然,其他网站基本不可能知道你的 csrfToken。所以在检测了csrf的请求中只会得到 400。本身就存在于你网站之下的 JS 却可以毫无顾忌的获得这个 token ,这也正是你希望的。
这类似于你给了用户呈现的网页中的背景是一副湛蓝的天空,用户自己可以用 F12 换成大海。但这个用户无法把其他人的背景也换成大海。
除非这个用户是你。
把csrf放到后台吧
1 其实你开启了控制器的enableCsrfValidation=true之后,控制器会帮你验证csrf的,你不用自己验证
2 如果想重新生成,调用一下Yii::$app->request->getCsrfToken(true)就行,记得把新生成这个csrf放到你的页面meta[name=csrf-token]的content里,便于继续调用
3 csrf的起到安全问题其实就是有这个验证(防止跨站攻击(跨站攻击,没这个值)),而没必要再变换这个值,所以没必要变换这个值
GridView可以设置一个单元格的显示颜色吗
你需要 contentOptions 这个属性
可以看我之前写的一个demo http://yiilib.com/topic/716/Yii2 GridView中实现断行断字
可以的,怎么控制都可以
$Grouporder=Grouporder::find()->where(['state'=>2,'id'=>$id])->asArray()->all();
foreach ($Grouporder as $key=>$value) {
$map['id'] = array('in',$value['orderId']);
$Order=Ordermanagement::find()->where($map)->asArray()->all();
}
IN 多条查询语句 不好事儿 求高手指导 谢谢
我这里的$arr是一个索引数组。where条件的意思是 status=1和category_id在$arr这个数组里面能找到的条件
把你的$value[‘orderId’]都打印初来,查看一下是否是你预期的值
用with和延迟加载把
http://www.yiichina.com/doc/guide/2.0/db-active-record#
你这个in写法好像thinkphp的,,,怪不得我看着好熟悉。。这种问题,你百度一下。就能找到,建议楼主遇事多百度O(∩_∩)O~
Unknown Property – yii\base\UnknownPropertyException
Setting unknown property: yii\filters\AccessControl::0
基本可以肯定你的控制器的behaviors方法的rules值写错了,看好了:rules的每个值是一个数组,大概像这样rules => [['actions' => ['create',],'allow' => true,'roles' => ['@']]],
我猜你写成了这样rules => ['actions' => ['create',],'allow' => true,'roles' => ['@']],
好好看看,最外层少了一层方括号
Setting unknown property: yii\filters\AccessControl::0,
意思是未知属性 0, 数组写错了,把代码贴出来,看看就知道了
我是下面这样写的,但提交是总是报错inputtime为空,查了手册和资料是这样写的吧
public function behaviors()
{
return [
'timestamp'=>[
'class' => TimestampBehavior::className(),
'attributes' => [
BaseActiveRecord::EVENT_BEFORE_INSERT => ['inputtime','updatetime'],
BaseActiveRecord::EVENT_BEFORE_UPDATE => 'updatetime'
],
'value' => time()
]
];
}
另外这里默认提供值的是11位整数,不是时间。
use yii\behaviors\TimestampBehavior;
public function behaviors()
用beforesave函数打印一下你存储时的对象。看看是什么值
用beforesave函数打印一下你存储时的对象。看看是什么值
配置如下,URL链接也是正确的 如:r=search/index&keyword=网站建设&page=4
但是结果始终之在第一页:![]()
请问是哪里错了。
`public function actionIndex(){
$sphinx = new SphinxClient();
$sphinx->setMatchMode(SPH_MATCH_ANY);
$sphinx->SetServer ( 'localhost', 9312 );//coreseek的主机名和端口
$sphinx->SetArrayResult ( true );//设置返回结果集为php数组格式
$key=Yii::$app->request->post('keyword','网站建设');
if(!$key){
$key=Yii::$app->request->get('keyword');
}
$result = $sphinx->query ($key, "mysql");//xxxx是查询的内容,mysql是测试的配置文件中系统默认的类名
$total=$result['total'];
$config = ['params' => ['keyword' => $key],'totalCount'=>$total,'defaultPageSize'=>10];
$pagination = new Pagination($config);
$sphinx->SetLimits($pagination->offset,$pagination->limit,1000);
$sphinx->SetMaxQueryTime(10);//最大搜索时间
$result = $sphinx->query ($key, "mysql");
if($result['total']){
$ids = ArrayHelper::getColumn($result['matches'], 'id');
}else{
$ids =[];
}
$rows=Company::find()->where(['in','id',$ids])->asArray()->all();
return $this->render('index',[
'rows'=>$rows,
'pagination'=>$pagination,
'total'=>$total,
'keyword'=>$key,
]);
}
`
可以这样解决,自己手动获取$page
再把它放到Pagination的配置里面去
你记得,本身不配置params的时候,它都是从get参数里去取的,所以在你的引导超链接里岛上w关键字,在控制器里去拿到查询,这样分页会自带这个关键字的。这样的分页,什么都不用配置,感觉比较好
点击第二页也还是显示的选中第一页吗?那展示出来的数据是第一页的还是第二页的?视图的代码呢
请问你的这个sphinx是怎么配置的,能就这样实例化的用?
use yii\widgets\LinkPager;
r=search/index&page=7
怎样改成:
r=search/index&w=关键词&page=7
这样的格式?
在new Pagination($config)的时候,除了你要的配置,在config里加入’params’ => [‘w’ => ‘关键词’],也就是
路由
RT,updateAll返回2,但是数据库并没有更新;
$result = $this->updateAll(array('status' => 1), 'store_id=:store_id', array(':store_id' => $store_id));
$result返回2.
数据库:
![]()
可以看出,数据库并没有改;
sqlLog:
2017/04/07 11:22:08 [trace] [system.db.CDbCommand] Executing SQL: UPDATE `slb_stock_balance` SET `status`=:yp0 WHERE store_id=:id
我记得有个参数可以把 :yp0 这个部分也显示到log中的,然后你根据 sql进行反查就行了。