我是Laravel的新手。我使用了这个recaptcha包:https://github.com/greggilbert/recaptcha,文档说:在您的验证规则中,添加以下内容:
$rules = array(
// ...
'g-recaptcha-response' => 'required|recaptcha',
};顺便说一下,我使用的是laravel 5的注册器:
<?php namespace taxman\Services;
use taxman\User;
use Validator;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
class Registrar implements RegistrarContract {
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
public function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:4',
'telephone' => 'required',
'g-recaptcha-response' => 'required|recaptcha',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}但在本例中,laravel返回错误消息:“需要g-recaptcha-response”,但在视图中,我使用了以下命令:
<div class="form-group">
{!! Recaptcha::render() !!}
</div>是的,这个字段不是空的!
所以,我想,我应该把'g-recaptcha-response' => 'required|recaptcha'放在别的地方吗?因为看起来,注册器中的验证器不起作用。
发布于 2015-08-24 15:10:48
如果有人仍然因为这个问题而拉扯他们的头发,只要删除验证规则中的'recaptcha'即可。
使用
'g-recaptcha-response' => 'required'而不是
'g-recaptcha-response' => 'required|recaptcha'请参阅http://tuts.codingo.me/google-recaptcha-in-laravel-application/
发布于 2015-05-03 07:46:12
如果您将以下内容粘贴到发生此操作的控制器中,则它应该可以工作。
$this->validate($request,'g-recaptcha-response‘=>’是否需要|recaptcha‘);
发布于 2015-05-17 04:28:24
根据文档https://developers.google.com/recaptcha/docs/verify,您需要检查g-recaptcha-response POST参数。因此,将其传递给validator()函数。
https://stackoverflow.com/questions/29635578
复制相似问题