我正在尝试学习 laravel
。我知道 Codeigniter
。在 codeigniter3
中,我将通过使用函数
$this -> form_validation -> error_array();
它会显示为
array(
'form_element1' => 'this field is required',
'form_element2' => 'this field is required'
)
在 laravel 5 中有什么方法可以做同样的事情吗?
请帮忙。任何帮助都将不胜感激
最佳答案
Laravel Controller 使用 ValidatesRequests
特性,它提供了一个 validate
方法。以下是如何验证请求的示例:
namespace App\Http\Controllers;
class MyController extends Controller
{
public function store(Request $request)
{
$this->validate($request, [
'subject' => 'required|max:255',
'message' => 'required',
]);
// All input is valid, do your task.
}
}
如果用户输入没有通过 $this->validate()
的规则,它将自动将您的用户重定向回带有旧输入和错误的表单 View 。错误由 $errors
变量保存,该变量是 Illuminate\Support\MessageBag
的一个实例,以在您的 View 中显示它:
@if (count($errors) > 0)
<div class="error">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
或者你可以通过按键获取错误:
@if($errors->has('subject'))
{{ $errors->first('subject');}} // Printed: Subject field is required.
@endif
要回答有关如何像在 CI 中那样显示错误的问题,您可以使用 Illuminate\Support\MessageBag
的 toArray()
方法:
$errors->toArray()
手动验证
您也可以使用 Validator
门面手动使用验证器实例,如下所示:
namespace App\Http\Controllers;
use Validator;
class MyController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'subject' => 'required|max:255',
'message' => 'required',
]);
if ($validator->fails()) {
return redirect('your-form-uri')->withErrors($validator)->withInput();
}
// All input is valid, do your task.
}
}
同样,您可以从 $errors
变量中获取错误,如上所示。
表单请求验证
要使用此方法,您可以先使用 artisan
CLI 创建表单验证请求:
php artisan make:request ContactRequest
它将为您创建一个ContactRequest
类,您可以在app/Http/Request/
文件夹中找到它。
namespace App\Http\Requests;
use App\Http\Requests\Request;
class ContactRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'subject' => 'required|max:225',
'message' => 'required',
];
}
}
在您的 Controller 方法变量上,您可以使用 ContactRequest $request
而不是使用 Request $request
:
namespace App\Http\Controllers;
use App\Http\Requests\ContactRequest;
class MyController extends Controller
{
public function store(ContactRequest $request)
{
// All input is valid, do your task.
}
}
如果用户输入通过,它将继续在该方法上执行您的代码,否则用户将被重定向回表单 View ,当然您可以像上面两种方法一样显示错误。
关于php - Laravel:以表单元素名称为键获取表单字段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37496025/