2016-05-07 2 views
1

У меня есть запрос формы, который проверяет атрибут name как обязательный. Когда я отправляю свою форму, он перенаправляет обратно на страницу создания без сохранения, но я не получаю никаких сообщений об ошибках.Проверка формы запроса на Laravel

Когда я делаю var_dump на $ errors, он пуст. Я оценил бы помочь выяснить, что происходит здесь ...

Посмотреть

@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); я получаю это:

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" 
} 
+0

Что произойдет, если вы Dd ($ запроса); как первая строка в магазине? – iKode

+0

@iKode Я добавил вывод dd ($ request); на мой вопрос – showFocus

ответ

0

в Laravel 5.2 вам нужно использовать «веб» промежуточный программное обеспечение для вашей проблемы, как и

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

Точно, что у меня есть @paranoid – showFocus

+0

Добавить все маршруты в web middelware – paranoid

+0

У меня, как я уже сказал ... ^ – showFocus

0

Таким образом, наличие моих маршрутов внутри веб промежуточного слоя стала причиной этой проблемы. По-видимому, в последней версии веб-промежуточного программного обеспечения Laravel предполагается.

Я получил ответ от принятого ответа на этот вопрос: Laravel 5.2 Not returning error array

Смежные вопросы