我通过在 /app 中创建一个验证文件夹来完成此操作,其中包含任何自定义验证文件。
我通过编辑自动加载它应用程序/启动/global.php.
ClassLoader::addDirectories(array(
app_path() . '/commands',
app_path() . '/controllers',
app_path() . '/models',
app_path() . '/presenters',
app_path() . '/validation',
app_path() . '/database/seeds',
));
我还在这个文件中注册了解析器;
Validator::resolver(function($translator, $data, $rules, $messages) {
return new CoreValidator($translator, $data, $rules, $messages);
});
示例自定义验证器类(在验证文件夹中);
<?php
class CoreValidator extends Illuminate\Validation\Validator
{
protected $implicitRules = array('Required', 'RequiredWith', 'RequiredWithout', 'RequiredIf', 'Accepted', 'RequiredWithoutField');
public function __construct(\Symfony\Component\Translation\TranslatorInterface $translator, $data, $rules, $messages = array())
{
parent::__construct($translator, $data, $rules, $messages);
$this->isImplicit('fail');
}
public function validatePostcode($attribute, $value, $parameters = null)
{
$regex = "/^((GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2}))$/i";
if (preg_match($regex, $value)) {
return true;
}
return false;
}
}
并将自定义错误消息添加到 in 中的数组中app/lang/en/validation.php
return array(
...
"postcode" => "Invalid :attribute entered.",
...
)