Php 需要自定义密钥才能在Laravel 5中注册
我正在开发的当前应用程序要求用户只有在获得注册密钥后才能注册。在Laravel 5中,我可以将其放入验证器:Php 需要自定义密钥才能在Laravel 5中注册,php,laravel,frameworks,Php,Laravel,Frameworks,我正在开发的当前应用程序要求用户只有在获得注册密钥后才能注册。在Laravel 5中,我可以将其放入验证器: return Validator::make($data, [ // some validation fields... 'registration_key' => 'required|same:'.$registration_key ]); 这将要求registration\u key字段与变量$registration\u key相同。但是,输入错误的键时,视
return Validator::make($data, [
// some validation fields...
'registration_key' => 'required|same:'.$registration_key
]);
这将要求registration\u key
字段与变量$registration\u key
相同。但是,输入错误的键时,视图中的错误消息将显示键:
错误:注册密钥和[密钥值]必须匹配。
显然,我不想向用户显示密钥。我知道Laravel有一些文档来展示如何扩展验证器facade,但是解释得很糟糕,我无法理解。有没有人做过类似的事情可以帮我
Validator::make($data, [
// some validation fields...
'registration_key' => 'required|same:' . $registration_key
], [
'registration_key.same' => 'your text for the error message'
]);
我不知道您是否可以在请求类中声明自己的错误消息,但您可以在控制器中检查它,然后添加错误消息
有关更多信息,请查看:
更新:
感谢Josh Janusch提供了更简单的解决方案
class MyRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$registration_key = 'your key';
return [
'registration_key' => 'required|same:'.$registration_key
];
}
/**
* Set custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return ['registration_key.same' => 'your key is not listed'];
}
}
要扩展第一句话,要在请求类中执行,只需重写方法
messages()
(或attributes()
,如果您只需要这些)。如果他们计划对多个字段使用相同的规则,他们也可以使用注册密钥。与规则名称相同的。我出去吃午饭,一小时后检查答案@Josh感谢您对解决方案进行扩展验证程序是在Auth controller中构建的,而不是在请求子类中,那么我该如何实现呢?在这种情况下,使用我的第一个解决方案:您将第三个参数设置为validator::make方法,在该方法中您必须编写相同的错误消息。Duh,忘了这一点。非常感谢。