我有一个用户将一次插入许多记录的表单。每个记录将具有ID,开始日期和结束日期。要处理输入数据,我正在寻找最佳方法来验证所有这些事情。Laravel:自定义多维数组验证
- 我得需要至少一个记录
- 对于每个inputed记录,ID应该存在于另一个表,日期开始和结束日期应该是有效的日期和结束日期应该比开始日期
所以我需要某种这里多维数组验证的旧于...有没有自定义验证插件/代码已经编码?
我试图扩大Laravel验证,但我无法得到甚至接近想什么,我......
我已经试过:
应用程序/服务/验证/ LearningPathValidator.php(我使用laravel扩展验证器)
<?php
use Crhayes\Validation\ContextualValidator;
class LearningPathValidator extends ContextualValidator
{
protected $rules = [
'default' => [
'name' => 'required|max:96',
'courses' => 'required|multi_array:course_id=required;exists:courses,date_start=required;date_format:d/m/Y,date_end=required;date_format:d/m/Y'
],
];
}
应用程序/ validations.php(在这里,我延伸照亮\确认\验证类)
<?php
class AppValidator extends Illuminate\Validation\Validator
{
protected function validateMultiArray($attribute, $value, $parameters)
{
if (!is_array($value)) {
return false;
}
foreach ($parameters as $parameter) {
list($_attribute, $rules) = $this->parseRule(
str_replace(['=', ';'], [':', ','], $parameter));
foreach ($rules as $rule) {
foreach (array_keys(Input::get($attribute)) as $idx){
$this->validate(sprintf('%s.%d.%s', $attribute, $idx,
snake_case($_attribute)), $rule);
}
}
}
return count($this->messages->all()) === 0;
}
}
我开始/ global.php:(这里我向照亮\确认\验证与AppValidator)
// ...
Validator::resolver(function($translator, $data, $rules, $messages) {
return new AppValidator($translator, $data, $rules, $messages);
});
// ...
我的模型正在使用courses[$index][course_id]
,courses[$index][date_start]
和courses[$index][date_end]
作为字段名称。
其实正如我以前说过,我不能要求至少一个记录,我不能保证结束日期会比开始日期老。有什么建议来重写我编码的内容?先谢谢你!
这是来自论坛的东西,声称工作http://forumsarchive.laravel.io/viewtopic.php?pid=31171 – Mei
很高兴你考虑使用AJAX为了在当时只有一个请求? – clod986