CodeIgniter 4 验证匹配选项的正确语法
Correct syntax for CodeIgniter 4 Validation matches option
我正在使用 CodeIgniter 4.0.4 为站点实现注册部分。
我在验证配置文件中实施了以下规则。
public $registro = [
'registro.nombre' => [
'rules' => 'required',
'errors' => [
'required' => 'El nombre es un campo obligatorio.'
]
],
'registro.apellido' => [
'rules' => 'required',
'errors' => [
'required' => 'El apellido es un campo obligatorio.'
]
],
'registro.email' => [
'rules' => 'required|valid_email',
'errors' => [
'required' => 'El correo electrónico es un campo obligatorio.',
'valid_email' => 'Por favor, revisa el formato de tu correo electrónico, no parece ser válido.'
]
],
'registro.password' => [
'rules' => 'required|min_length[6]',
'errors' => [
'required' => 'La contraseña es un campo obligatorio.',
'min_length' => 'La contraseña debe ser de al menos 6 caracteres.'
]
],
'registro.verificar_password' => [
'rules' => 'required|matches[registro.password]|min_length[6]',
'errors' => [
'required' => 'Verificar contraseña es un campo obligatorio.',
'matches[registro.password]' => 'Las contraseñas no coinciden, por favor revisa.',
'min_length' => 'Verificar contraseña es un campo que debe ser de al menos 6 caracteres.'
]
]
];
除 matches[registro.password]
选项外,一切正常。问题是我不确定如何在错误消息中添加它。在 the documentation 中没有具体的例子。
我的密码输入(简化代码)是这些:
<input type="password" name="registro[password]" minlength="6" id="registro_password" placeholder="Contraseña (mínimo 6 caracteres)" required />
<input type="password" name="registro[verificar_password]" minlength="6" data-equalto="registro_password" id="registro_verificar_password" placeholder="Verificar contraseña" required />
所以,基本上当我将信息发送到我的控制器时,我会得到一个包含这两个索引的数组。我确保密码相同,但我一直收到该错误。我试图将匹配的错误索引更改为这两个版本:
// Version 1
'matches[registro.password]' => 'Las contraseñas no coinciden, por favor revisa.'
// Output
// The registro.verificar_password field does not match the registro.password field.
// This is not a message I have defined as you can see above
// Version 2
'matches' => 'Las contraseñas no coinciden, por favor revisa.'
// Output
// Las contraseñas no coinciden, por favor revisa.
// This is the message I have defined above.
对于这个例子,我实际上使用 123456 作为密码。
我尝试这样做,结果如下:
var_dump($post['registro']['password'] == $post['registro']['verificar_password']);
// Output
// bool(true)
if(!$validation->run($post, 'registro')) {
echo $validation->listErrors();
}
// Output
// Las contraseñas no coinciden, por favor revisa.
我是不是做错了什么,或者这是一个验证库错误?
好的,我与 CodeIgniter 4 团队核实了这一点,创建了一个 issue report。
这确实是一个错误,当人们阅读这篇文章时,这个错误就会得到修复。只是为了澄清我自己的问题,为 matches
索引使用 errors
消息的正确方法是:
'registro.verificar_password' => [
'rules' => 'required|matches[registro.password]|min_length[6]',
'errors' => [
'required' => 'Verificar contraseña es un campo obligatorio.',
'matches' => 'Las contraseñas no coinciden, por favor revisa.',
'min_length' => 'Verificar contraseña es un campo que debe ser de al menos 6 caracteres.'
]
]
基本上 errors
数组中的索引应该只有 matches
。
我正在使用 CodeIgniter 4.0.4 为站点实现注册部分。
我在验证配置文件中实施了以下规则。
public $registro = [
'registro.nombre' => [
'rules' => 'required',
'errors' => [
'required' => 'El nombre es un campo obligatorio.'
]
],
'registro.apellido' => [
'rules' => 'required',
'errors' => [
'required' => 'El apellido es un campo obligatorio.'
]
],
'registro.email' => [
'rules' => 'required|valid_email',
'errors' => [
'required' => 'El correo electrónico es un campo obligatorio.',
'valid_email' => 'Por favor, revisa el formato de tu correo electrónico, no parece ser válido.'
]
],
'registro.password' => [
'rules' => 'required|min_length[6]',
'errors' => [
'required' => 'La contraseña es un campo obligatorio.',
'min_length' => 'La contraseña debe ser de al menos 6 caracteres.'
]
],
'registro.verificar_password' => [
'rules' => 'required|matches[registro.password]|min_length[6]',
'errors' => [
'required' => 'Verificar contraseña es un campo obligatorio.',
'matches[registro.password]' => 'Las contraseñas no coinciden, por favor revisa.',
'min_length' => 'Verificar contraseña es un campo que debe ser de al menos 6 caracteres.'
]
]
];
除 matches[registro.password]
选项外,一切正常。问题是我不确定如何在错误消息中添加它。在 the documentation 中没有具体的例子。
我的密码输入(简化代码)是这些:
<input type="password" name="registro[password]" minlength="6" id="registro_password" placeholder="Contraseña (mínimo 6 caracteres)" required />
<input type="password" name="registro[verificar_password]" minlength="6" data-equalto="registro_password" id="registro_verificar_password" placeholder="Verificar contraseña" required />
所以,基本上当我将信息发送到我的控制器时,我会得到一个包含这两个索引的数组。我确保密码相同,但我一直收到该错误。我试图将匹配的错误索引更改为这两个版本:
// Version 1
'matches[registro.password]' => 'Las contraseñas no coinciden, por favor revisa.'
// Output
// The registro.verificar_password field does not match the registro.password field.
// This is not a message I have defined as you can see above
// Version 2
'matches' => 'Las contraseñas no coinciden, por favor revisa.'
// Output
// Las contraseñas no coinciden, por favor revisa.
// This is the message I have defined above.
对于这个例子,我实际上使用 123456 作为密码。
我尝试这样做,结果如下:
var_dump($post['registro']['password'] == $post['registro']['verificar_password']);
// Output
// bool(true)
if(!$validation->run($post, 'registro')) {
echo $validation->listErrors();
}
// Output
// Las contraseñas no coinciden, por favor revisa.
我是不是做错了什么,或者这是一个验证库错误?
好的,我与 CodeIgniter 4 团队核实了这一点,创建了一个 issue report。
这确实是一个错误,当人们阅读这篇文章时,这个错误就会得到修复。只是为了澄清我自己的问题,为 matches
索引使用 errors
消息的正确方法是:
'registro.verificar_password' => [
'rules' => 'required|matches[registro.password]|min_length[6]',
'errors' => [
'required' => 'Verificar contraseña es un campo obligatorio.',
'matches' => 'Las contraseñas no coinciden, por favor revisa.',
'min_length' => 'Verificar contraseña es un campo que debe ser de al menos 6 caracteres.'
]
]
基本上 errors
数组中的索引应该只有 matches
。