我正在努力学习laravel
。我知道Codeigniter
。在codeigniter3
中,我将使用函数
$this -> form_validation -> error_array();
它将显示为
array(
'form_element1' => 'this field is required',
'form_element2' => 'this field is required'
)
在laravel 5中有没有办法做同样的事情?
请帮忙。任何帮助都可以得到赞赏
答案 0 :(得分:7)
Laravel控制器使用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()
规则,则会自动将您的用户重定向到具有旧输入和错误的表单视图。错误由$errors
变量保存,该变量是Illuminate\Support\MessageBag
的一个实例,以便在您的视图中显示:
@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中显示错误的问题,您可以使用toArray()
的{{1}}方法:
Illuminate\Support\MessageBag
您也可以使用$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
CLI创建表单验证请求:
artisan
它会为您创建一个 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',
];
}
}
上,您可以使用Request $request
:
ContactRequest $request
如果用户输入通过,它将继续在该方法上执行您的代码,否则用户将被重定向回到表单视图,当然您可以显示与上述两种方法相同的错误。
答案 1 :(得分:2)
您可以设置从控制器返回
return redirect->back()->withErrors($request->all());
或
return redirect->back()->withErrors(Input::all());
您可以在视图中打印错误
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
答案 2 :(得分:0)
这将显示附加在其键上的每个错误消息:
@foreach($errors->getMessages() as $key => $error)
{{$key}}: {{$error[0]}}
@endforeach