gpt4 book ai didi

php - 是否有正确的方法在 Laravel 中对一种形式的不同部分实现部分验证

转载 作者:搜寻专家 更新时间:2023-10-31 21:07:41 25 4
gpt4 key购买 nike

我正在使用 Laravel 开发一个项目,该项目包含大约 100 个字段,分布在 5 个单独的页面和这些页面的表单上。即使尚未填写必填字段,用户也可以保存他们的信息(尽管在填写所有必填字段之前他们无法提交整个表单)。

我想做的是对每页进行类似“软”验证的操作,这不会阻止将模型保存到数据库中,而只是具有页面是否完整的视觉指示器。

到目前为止我所做的是为每个页面实现一个 $rules 数组,例如

//in Application model
public static $page_1_rules = array(
'has_previously_attended' => 'required',
'degree_status' => 'required',
'date_of_birth' => 'size:10',
...

public static $page_2_rules = array(
'high_school_start_date' => 'required_if:degree_status,new|size:10',
'previous_college_1_start_date' => 'required_if:degree_status,transfer|size:10',
...

是否有可能(甚至是一个好主意)针对模型本身运行验证,而不是通过类似Input::all()

//also in Application model

public static function page1IsComplete($application)
{
$validator = Validator::make(/*[get all of the $application's values]*/, Application::$page_1_rules);

return !$validator->fails();
}

我的直觉告诉我这不是最好的方法,但我不确定 Laravel 是否有一些我不知道的其他功能更适合这样的事情。

最佳答案

我会实现这样的东西:

public function store(Request $request) {

$step_first = $this->validate_step_1($request);
if($step_first == "true")
// do soft save


$step_second = $this->validate_step_2($request);
if($step_second == "true")
// do actual save

}

public function validate_step_1(Request $request) {

// soft validations
$v = Validator::make($request->all(), [
'email' => 'email',
'company_name' => 'min:2'

]);

if ($v->fails()) {

return false;

} else {
return true;
}
}

public function validate_step_2(Request $request) {

// some serious validations
$v = Validator::make($request->all(), [
'email' => 'email',
'company_name' => 'required',
'legal_name' => 'required',
'short_description' => 'required|min:20|max:2500',
'country' => 'required|not_in:0',
'city' => 'required|not_in:0',
'company_logo' => 'mimes:jpeg,png|max:1024|min:5',
'telephone_1' => 'required|min:4',
'zipcode' => 'required',
'address_line_1' => 'required|min:5'
]);

if ($v->fails()) {

return false;

} else {
return true;
}
}

关于php - 是否有正确的方法在 Laravel 中对一种形式的不同部分实现部分验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com