我已将自定义验证规则添加到我的Laravel 5.1应用程序中,目前我在AppServiceProvider
中将其设置为这样:
Validator::extend('word_count', 'App\CustomValidators@wordCount');
Validator::extend('required_if_not', 'App\CustomValidators@requiredIfNot');
Validator::extend('date_in_year', 'App\CustomValidators@dateInYear');
这很有效,但我想知道是否有更好的方法我应该使用5.1而不是调用Validator外观。
例如,调用视图不再需要我拨打View::request('template', $viewData)
或View::make('template', $viewData)
,而是可以调用view('template', $viewData)
,这会减少我需要的命名空间数量'使用'为了我的课。我也可以用重定向做类似的事情。
Laravel 5.1中添加自定义验证规则的最佳/最干净方法是什么?
答案 0 :(得分:1)
嗯,这里可能的解决方案是创建一个自定义函数(辅助函数为from PIL import Image
import StringIO
import binascii
# In your case, 's' will be the string from the field
# in the database.
s = open("chenchi.txt").read()
# chop off the '0x' at the front.
s = s[2:]
# Decode it to binary.
binary = binascii.unhexlify(s)
# Wrap the bytes in a memory stream that can be read like a file.
bytes = StringIO.StringIO(binary)
# Use pillow to read the memory stream into an image (it autodetects the format).
im = Image.open(bytes)
# And show it. Or you could .save() it.
im.show()
)以避免外观。
view()
现在您可以将其命名为:
if (! function_exists('validator_ext')) {
/**
* Adding custom rules
*
* @param string $name
* @param array $listener
* @return \Illuminate\Validation\Factory
*/
function validator_ext($name, $listener)
{
$validator = app('Illuminate\Validation\Factory');
$validator->extend($name, $listener);
return $validator;
}
}
不使用辅助函数的另一种方法是在引导方法实例化验证器:
validator_ext('word_count', 'App\CustomValidators@wordCount');