登录之后,不能退出,logout后跳转首页,状态不改变,还是处于登录状态,这是什么原因引起的,求大神解惑!
默认的,logout是要求post执行的~你确定是用post方法调用的logout吗?
登录之后,不能退出,logout后跳转首页,状态不改变,还是处于登录状态,这是什么原因引起的,求大神解惑!
默认的,logout是要求post执行的~你确定是用post方法调用的logout吗?
想规范下用Yii2做站点的流程。请各位赐教。
就以普通的站点为例,有前台有后台。前台主要展示信息,后台主要管理。需要先干什么再做什么,这个流程想规范下。
首页下载yii2
然后编写代码
最下发布网站
先确定业务逻辑,一般先做后台再做前台。这样开发比较快
我觉得最好的方法就是下载一个小型的项目源码,然后从入口文件按流程看着走,一遍下来,我觉得应该 不离十了,就差实践了!
$model = new User(['scenario' => 'login']);
这句话中,scenario代表什么?login代表什么?新手求解答!!谢谢!!
scenario:场景
login:自定义的场景名称。
[‘scenario’ => ‘login’]:意思就是实例化的时候,把场景设置成login。
用途:根据场景,进行不同的操作,比如在login场景下rules规则做什么验证,是否能插入,更新,删除等。
再具体例子:比如我们定义login为登录场景,那么我们可以设置这个user实例化后,只是做登录验证,rules验证用户名密码匹配,只做查询,不能更新和删除。再定义signup为注册场景,那么rules验证用户名是否可用,密码是否符合等,然后做插入操作。这些都可以根据场景区分。
使用Yii2自带的用户组件yii/web/User来实现登录,自建的UserModel也继承了IdentityInterface接口,但是在使用Yii::$app->user->login($identity, $duration)
登录时,虽然登录成功了,但是$duartion并未起作用,查看生成的cookie始终是24小时后失效,无论怎么调整$duration也不起作用,请问这是什么原因呢?
csdn博客:Yii2 login登陆
可参考这个博客,里面比较详细讲述了yii2 login的问题allowCookie
什么的开了么,具体属性名字忘记了……
enableAutoLogin 是否启用了
這邊是我 models 的 code
namespace app\models;
use Yii;
use app\models\Api;
class Order_api extends Api
{
public $account_id;
public $create_date;
public $auth_code;
public function rules()
{
return [
[['account_id','auth_code'], 'required']
];
}
public function check_params($standard ,$data)
{
return parent::check_params($standard ,$data);
}
}
這邊是 controller 的 code
public function actionTest()
{
$app_order = [
'account_id' => '1',
'create_date' => '2',
'auth_code' => '3'
];
$a = new \app\models\Order_api;
$a->attributes = $app_order; <====== 這邊為什麼我把 models 的 public rules() 整個function 移除
//$a->account_id = '1';
$a->attributes;
var_dump($a); <====== 這邊印出來的卻是 每個成員變數都是 NULL
}
有查看 yii\base\Models attributes() 內部的寫法 他也指示用 ReflectionClass 反映有哪些 public name 而已
想請教 $a->attributes = $app_order; 當我的 models 有 public rules(){ … } 的時候
var_dump($a); 的成員變數是有被賦予值得,但我移除 public rules(){ … }之後成員變數卻都是 NULL
想知道他流程是怎麼跑的為什麼只有 NULL 而沒有值 !!
剛剛沒有看 _set && _get 現在知道怎麼設定了~~~ 希望也可以分享您知道的流程給我參考
$a->attributes = $app_order;
实际调用的是 $a->setAttributes($app_order);
而调用setAttributes
方法赋值时, 默认只加载safaAttributes
;
所谓的safeAttributes
, 指的就是 : 在rules
中有声明验证规则的attribute
;
这就是rules
移掉, 赋值后全是null
的原因
所以 : 在rules
里面把需要的属性都声明到, 即便是safe
也可以.
请问我用了rbac还需要在控制器里面使用behaviors方法吗,新手求教?
视具体情况而定,如检测是否登录了用AccessControl,里面也可以写RBAC中的role
现在我有一个搜索表单,其中有两个属性分别为attr1和attr2,只有当这两个属性的一个属性存在或者都存在的情况下才能执行搜索功能,请问各位大虾这个规则在model中的rules中如何写呢?
我是这样实现的,感觉有些繁琐,同求简洁的解决方案
你可以看下yii2.0的验证规则啊
两个已经关联的表
表1是hasMany,表2是hasOne,并分别由字段id 与 model_id 相关联
表2内的其中5条记录的字段model_id相同,并与表1内字段id的值相同
在表2的controller条件查询应该怎么写?我想在表2的index下显示出表2内model_id值相同的记录
这个yii也有关联的事例 http://www.yiichina.com/tutorial/96
如果是用ActiveRecord手册有说
如果你要一条sql来查就用
用这个类\yii\db\Query() 手册(类手册)有说
或者写原生sql
\yii::$app->db->createCommand($sql)->queryAll();
这问题有点莫名其妙的。
要查询表2的数据你直接查就好了。。要model_id一样 你条件直接model_id=多少,你传进去就好了。。。
要所有根据表1的id分组,你直接查表1,然后用你的hasMany就好了。每个hasMany查出来的就是model_id相同的一类了。
没看明白想说啥!
在登录的时候,使用这个静态方法,但是提示未定义
Yii::$app->user->login(static::findByUsername($this->username))
请问是因为我继承的不对吗?还是什么问题
这个方法是要自己写的~
下面是模版中的方法:
如果你使用数据库,可以用User::findOne(['username'=>$username])
Yii2 微信请求填写的URL的时候,我在入口文件(index.php),可以获取发送来的数据,并可以在log中查看到数据。但是发现没有分发到URL所指的控制器方法中。我在控制器方法里面获取不到数据,log也没有数据,请高手帮下忙,看下怎么回事
遇到这种情况,是因为 Yii2 的防止 csrf 攻击,你则不能多次提交相同的表单。如果你希望当前可以多次重复提交,可以在当前提交的表单 controller 中添加
我遇到的情况和你一模一样,捣鼓了一天才弄出来,你试试吧
可以直接在控制器中获取数据。你在腾讯的“微信公众平台”管理页面的“开发者中心”“配置项”指定url、token的地方,url那里填你的完整路由就好了。
可以在index.php上获取数据,那么在控制器中也是可以获取的,这个是全局的。
如你所说,获取不到,
原因可能是你访问url有问题,是不是没有访问到你的控制器里面动作。
可以看下生成的log。
index.php 后 写人session里,全局调用, 如果写不进去就是字符编码问题,或者解析json有问题.