Laravel:以表单元素名称为键获取表单字段错误 [英] Laravel: Get form field error with form element name as key

查看:116
本文介绍了Laravel:以表单元素名称为键获取表单字段错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试学习laravel.我知道Codeigniter.在codeigniter3中,我将通过使用

I am trying to learn laravel. I know Codeigniter. In codeigniter3 I will get the form error as an array with key as the form name by using the function

$this -> form_validation -> error_array();

它将显示为

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

laravel 5中有什么方法可以做同样的事情吗?

请帮助.任何帮助都将不胜感激

Please help. Any help could be appreciated

推荐答案

Laravel控制器使用提供了validate方法的ValidatesRequests特征.这是如何验证请求的示例:

Laravel controller uses ValidatesRequests trait which provides a validate method. Here is example how to validate a request:

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()规则,它将自动将您的用户重定向到具有旧输入和错误的表单视图.错误由Illuminate\Support\MessageBag的实例$errors变量保存,以在视图中显示它:

If user inputs doesn't pass the rules of $this->validate() it will be automatically redirect your user back to the form view with old input and errors. The errors is held by $errors variable which is an instance of Illuminate\Support\MessageBag, to display it on your view:

@if (count($errors) > 0)
    <div class="error">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

或者您可以通过按键得到错误:

Or you can get error by key:

@if($errors->has('subject'))
    {{ $errors->first('subject');}} // Printed: Subject field is required.
@endif

要回答有关如何在CI中显示错误的问题,可以使用Illuminate\Support\MessageBagtoArray()方法:

To answer your question about how to display errors like in CI you can use toArray() method of Illuminate\Support\MessageBag:

$errors->toArray()

手动验证

您还可以通过Validator外观手动使用验证程序实例,如下所示:

Manual Validation

You may also use validator instance manually using the Validator facade, like this:

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变量中获取错误.

Again you can get the errors from $errors variable as above.

要使用此方法,可以先使用artisan CLI创建表单验证请求:

To use this method, you can start by creating a form validation request using artisan CLI:

 php artisan make:request ContactRequest

它将创建一个ContactRequest类,您可以在app/Http/Request/文件夹中找到它.

It will create you a ContactRequest class, you can find it in app/Http/Request/ folder.

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:

On your controller method variable instead of using Request $request you may use ContactRequest $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.
    }

}

如果用户输入通过,它将继续在该方法上执行您的代码,否则用户将被重定向回表单视图,当然您可以显示与上述两种方法相同的错误.

If user input passes it will continue to execute your code on that method otherwise user will be redirected back to form view, and of course you can display the errors the same as two method above.

这篇关于Laravel:以表单元素名称为键获取表单字段错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆