为了账号安全,请及时绑定邮箱和手机立即绑定

请问thinkphp中model类自动完成功能 回调函数能不能获取其他字段的值?

请问thinkphp中model类自动完成功能 回调函数能不能获取其他字段的值?

UYOU 2019-08-20 14:12:53
thinkphp中model类自动完成功能 回调函数能不能获取其他字段的值?
查看完整描述

6 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

方法一(不使用回调传参用I函数接收参数):

protected $_validate = array(
array('invited_id','check_invited','邀请人不存在!',0,'callback',3 ),
);

protected function check_invited( $invited_id ) {

$invite_code = I('invite_code');
//....
}

方法二(重写模型_initialize方法):
public function _initialize() {
$this->_validate[3][6]['invite_code'] = I('invite_code'); // 动态加入回调参数
}

protected function check_invited( $invited_id, $invite_code ) {

echo $invite_code;
}

推荐使用方法一,方法二有些南辕北辙只做为参考。

查看完整回答
反对 回复 2019-08-21
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

如果是查询当前用户的上级用户的话,可以在用户登录的时候就把这个值放入到session中,然后有更改的时候再修改数据库的同时将session中用户的pid修改,然后再获取pid的时候直接从session中获取就好了啊。

查看完整回答
反对 回复 2019-08-21
?
智慧大石

TA贡献1946条经验 获得超3个赞

1、thinkphp中的自动完成函数调用有两种不同的方法,分别为callback与function;

12345678910namespace Home\Model;use Think\Model;class UserModel extends Model{     protected $_auto array          array('status','1'),  // 新增的时候把status字段设置为1         array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理         array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法         array('update_time','time',2,'function'), // 对update_time字段在更新的时候写入当前时间戳     );}

2、使用callback时,其方法是在同一个model中定义的;

1234567891011121314namespace Home\Model;use Think\Model;class UserModel extends Model{     protected $_auto array          array('status','1'),  // 新增的时候把status字段设置为1         array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理         array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法         array('update_time','time',2,'function'), // 对update_time字段在更新的时候写入当前时间戳     );           public function getName(){         return $name;     }}

3、使用fucntion的方法对应的方法定义是在模块中的common文件夹下的function.php中;




查看完整回答
反对 回复 2019-08-21
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

thinkphp模版调用函数方法 {变量|函数1|函数2|函数3=参数1,参数2,参数3,###} ###为第4个参数,代表变量替换为第4个参数 举例: {$username|substr=0,3}取标题中前3个字符 {$times|date='Y-m-d H:i:s',###}将times时间戳转换为日期格式 ========...

 

查看完整回答
反对 回复 2019-08-21
  • 6 回答
  • 0 关注
  • 603 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信