我正在构建一个自定义PHP MVC应用程序,该应用程序将验证用户输入,如果出现错误,应使用变量将其重定向回,以保存所有验证错误。
这是我想做的方式,我想在这里模仿laravel:
使用特征函数来验证发布请求的控制器函数
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|min:3|max:100|unique:categories'
]);
$category = Category::create([
'name' => $request->name,
'slug' => slugify($request->name)
]);
return Redirect::back();
}
这是验证方法
public function validate($data, $policies)
{
foreach($policies as $column => $rules)
{
if (property_exists($data, $column))
{
$array_of_rules = explode("|", $rules);
foreach (array_reverse($array_of_rules) as $method_name)
{
if (strpos($method_name, ":") == false) {
$this->$method_name($column, $data->$column);
} else {
list($method, $param) = explode(":", $method_name);
$this->$method($column, $data->$column, $param);
}
}
}
}
$errors = new Errors($this->errorMessages);
if ($this->hasValidationErrors)
{
Session::set('errors', $errors);
Redirect::back();
}
}
我检查validate方法内是否有错误
$errors = new Errors($this->errorMessages);
if ($this->hasValidationErrors)
{
Session::set('errors', $errors);
Redirect::back();
}
然后我尝试将它们注册到error会话变量中,但这将无法正常工作,因为我想像在laravel中一样检查错误
if($ errors-> any())
做点什么......
如何重定向回并设置可以在该后页中访问的错误变量。