加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

我该怎么办模特会话? CakePHP 3.x

发布时间:2020-12-13 13:35:26 所属栏目:PHP教程 来源:网络整理
导读:Cakephp 3.x 我想做我的验证码自定义验证.但我无法访问会话. $validator-notEmpty('securityCode',__('not empty message')) -add('securityCode','custom',['rule' = function ($value,$context) use ($extra) { if($this-request-Session()-read('captcha'
Cakephp 3.x

我想做我的验证码自定义验证.但我无法访问会话.

$validator->notEmpty('securityCode',__('not empty message'))
    ->add('securityCode','custom',['rule' => function ($value,$context) use ($extra) {
            if($this->request->Session()->read('captcha') != $value) {
                return false;
            }
            return true;
        },'message' => 'error security code']);
 return $validator;

或者我的自定义验证功能可以提供自定义参数吗?

public function validationLogin(Validator $validator,$customParameter)
{ //bla bla }

我用的是:http://book.cakephp.org/3.0/en/core-libraries/validation.html#custom-validation-rules

您可以将Session数据作为验证函数的参数传递
// In Controller
$sessionData = $this->request->Session()->read('captcha');
$validator = $this->{YourModel}->validationLogin(new Validator(),$sessionData);

$errors = $validator->errors($this->request->data());
if (!empty($errors)) {
    // Captcha validation failed
}


// In Model
public function validationLogin(Validator $validator,$sessionData)
{
    $validator
        ->notEmpty('securityCode',__('not empty message'))
        ->add('securityCode',[
            'rule' => function ($value,$context) use ($sessionData) {
                if ($sessionData != $value){
                    return false;
                }
                return true;
            },'message' => 'error securty code'
        ]);

        return $validator;
}

编辑:你可以从模型访问会话,但这不是一个好习惯,你最好避免它.而是将其从控制器传递,如上例所示

// In model
use CakeNetworkSession;
$session = new Session();
$sessionData = $session->read('captcha');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读