Laravel显示表单错误,表单元素名称为键

时间:2016-05-28 06:39:31

标签: php laravel laravel-5.2

我正在努力学习laravel。我知道Codeigniter。在codeigniter3中,我将使用函数

将表单错误作为带有键作为表单名称的数组
$this -> form_validation -> error_array();

它将显示为

array(
    'form_element1' => 'this field is required',
    'form_element2' => 'this field is required'
)

在laravel 5中有没有办法做同样的事情?

请帮忙。任何帮助都可以得到赞赏

3 个答案:

答案 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