在Laravel 4中,合并规则集是如何实现的?
In Laravel 4, How are the merging rulesets implemented?
我正在使用 dwightwatson/validating 包在模型中创建验证规则。
我特别喜欢您可以为不同路线创建的自定义规则集。
型号
protected $rulesets = [
'set_up_all' => [
'headline' => 'required|max:100',
'description' => 'required'
],
'set_up_property' => [
'pets' => 'required'
],
'set_up_room' => [
'residents_gender' => 'required',
'residents_smoker' => 'required'
],
'set_up_roommate' => [
'personal_gender' => 'required',
'personal_smoker' => 'required'
]
];
控制器
$post = new Post(Input::all());
if($post->isValid('set_up_all', false)) {
return 'It passed validation';
} else {
return 'It failed validation';
}
在上面的示例中,它可以很好地验证 set_up_all 规则集。现在我想结合几个规则集并一起验证所有规则集。
根据文档,该软件包提供了一种方法 merge rulesets。我只是不知道如何将提供的示例集成到我当前的流程中。
根据文档,我需要实现这一行:
$mergedRules = $post->mergeRulesets('set_up_all', 'set_up_property_room', 'set_up_property');
这是我的尝试,但没有成功:
if($mergedRules->isValid()) { ...
我收到以下错误:
Call to a member function isValid() on array
我也试过这个,但也没用:
if($post->isValid($mergedRules)) { ...
我收到以下错误:
array_key_exists(): The first argument should be either a string or an integer
关于如何实施合并规则集有什么建议吗?
据我所知 - mergeRulesets()
returns 一组规则。
因此,如果您这样做 - 它可能会起作用:
$post = new Post(Input::all());
$post->setRules($post->mergeRulesets('set_up_all', 'set_up_property_room', 'set_up_property'));
if($post->isValid()) {
///
}
我已经为 Laravel 4.2 (0.10.7
) 发布了包的更新版本,现在允许您将规则传递给 isValid()
方法来验证它们。
$post->isValid($mergedRules);
其他答案也可以,但这种语法更好(并且不会覆盖模型上的现有规则)。
我正在使用 dwightwatson/validating 包在模型中创建验证规则。
我特别喜欢您可以为不同路线创建的自定义规则集。
型号
protected $rulesets = [
'set_up_all' => [
'headline' => 'required|max:100',
'description' => 'required'
],
'set_up_property' => [
'pets' => 'required'
],
'set_up_room' => [
'residents_gender' => 'required',
'residents_smoker' => 'required'
],
'set_up_roommate' => [
'personal_gender' => 'required',
'personal_smoker' => 'required'
]
];
控制器
$post = new Post(Input::all());
if($post->isValid('set_up_all', false)) {
return 'It passed validation';
} else {
return 'It failed validation';
}
在上面的示例中,它可以很好地验证 set_up_all 规则集。现在我想结合几个规则集并一起验证所有规则集。
根据文档,该软件包提供了一种方法 merge rulesets。我只是不知道如何将提供的示例集成到我当前的流程中。
根据文档,我需要实现这一行:
$mergedRules = $post->mergeRulesets('set_up_all', 'set_up_property_room', 'set_up_property');
这是我的尝试,但没有成功:
if($mergedRules->isValid()) { ...
我收到以下错误:
Call to a member function isValid() on array
我也试过这个,但也没用:
if($post->isValid($mergedRules)) { ...
我收到以下错误:
array_key_exists(): The first argument should be either a string or an integer
关于如何实施合并规则集有什么建议吗?
据我所知 - mergeRulesets()
returns 一组规则。
因此,如果您这样做 - 它可能会起作用:
$post = new Post(Input::all());
$post->setRules($post->mergeRulesets('set_up_all', 'set_up_property_room', 'set_up_property'));
if($post->isValid()) {
///
}
我已经为 Laravel 4.2 (0.10.7
) 发布了包的更新版本,现在允许您将规则传递给 isValid()
方法来验证它们。
$post->isValid($mergedRules);
其他答案也可以,但这种语法更好(并且不会覆盖模型上的现有规则)。