Laravel表单请求验证

时间:2016-05-07 11:52:31

标签: validation laravel request laravel-5.2

我有一份表单请求,用于验证' name'属性根据需要。当我提交表单时,它会重定向回创建页面而不保存,但我没有收到任何错误消息。

当我对$ errors执行var_dump时,它是空的。我很感激帮助弄清楚这里发生了什么......

查看

@if($errors->any())
  <ul class="alert alert-danger">
    @foreach($errors->all() as $error)
      <li>{{ $error }}</li>
    @endforeach
  </ul>
@endif
{{var_dump($errors)}}

控制器:

<?php

namespace CRM\Http\Controllers\Settings;

use CRM\Http\Requests;
use CRM\Http\Controllers\Controller;

use CRM\Category;
use CRM\Http\Requests\CategoryFormRequest;
use Illuminate\Http\Request;
use Carbon\Carbon;
use Session;

class CategoriesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return void
     */
    public function index()
    {
        $categories = Category::paginate(15);

        return view('settings.categories.index', compact('categories'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return void
     */
    public function create()
    {
        return view('settings.categories.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param CategoryFormRequest $request
     */
    public function store(CategoryFormRequest $request)
    {

        Category::create($request->all());

        Session::flash('flash_message', 'Category added!');

        return redirect('settings/categories');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function show($id)
    {
        $category = Category::findOrFail($id);

        return view('settings.categories.show', compact('category'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function edit($id)
    {
        $category = Category::findOrFail($id);

        return view('settings.categories.edit', compact('category'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function update($id, Request $request)
    {
        $this->validate($request, ['name' => 'required', ]);

        $category = Category::findOrFail($id);
        $category->update($request->all());

        Session::flash('flash_message', 'Category updated!');

        return redirect('settings/categories');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function destroy($id)
    {
        Category::destroy($id);

        Session::flash('flash_message', 'Category deleted!');

        return redirect('settings/categories');
    }
}

表格申请:

<?php

namespace CRM\Http\Requests;

use CRM\Http\Requests\Request;

class CategoryFormRequest 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 [
            'name' => 'required'
        ];
    }

    public function messages()
    {
        return [
            'name.required' => 'Please enter a name for this category'
        ];
    }
}

路线:

Route::group(['middleware' => ['web']], function () {
    Route::resource('settings/categories', 'Settings\\CategoriesController');
    Route::resource('settings/statuses', 'Settings\\StatusesController');
    Route::get('/', function () {
        return view('welcome');
    });
});

如果我把它放在商店的第一行()     DD($请求); 我明白了:

Request {#40 ▼
  #json: null
  #convertedFiles: null
  #userResolver: Closure {#211 ▶}
  #routeResolver: Closure {#210 ▶}
  +attributes: ParameterBag {#42 ▶}
  +request: ParameterBag {#41 ▶}
  +query: ParameterBag {#48 ▶}
  +server: ServerBag {#45 ▶}
  +files: FileBag {#44 ▶}
  +cookies: ParameterBag {#43 ▶}
  +headers: HeaderBag {#46 ▶}
  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: "/settings/categories"
  #requestUri: "/settings/categories"
  #baseUrl: ""
  #basePath: null
  #method: "POST"
  #format: null
  #session: Store {#240 ▶}
  #locale: null
  #defaultLocale: "en"
}

2 个答案:

答案 0 :(得分:0)

在laravel 5.2中你需要使用&#34; web&#34;你的问题的中间件,像那样

Route::group(['middleware' => ['web']], function () {
 // here you should put your routes
  });

答案 1 :(得分:0)

因此,在Web中间件中使用我的路由是导致此问题的原因。显然,在最新版本的Laravel Web中间件被假设。

我从这个问题的接受答案中得到了答案:Laravel 5.2 Not returning error array

相关问题