2016-04-03 87 views
1

我使用验证的方法进行验证请求,但var错误在视图中为空:/。

在控制器

,我有:

Route::group(['middleware' => ['web']], function() { 

Route::get('/', function(){ 
    return view('home'); 
})->name('home'); 

Route::group(['prefix' => 'do'], function($name = null){ 


Route::get('/{action}/{name?}', ['uses' => '[email protected]', 'as' =>                 'get']); 


    Route::post('/', ['uses' => '[email protected]', 'as' => 'post' ]); 

    }); 
}); 

用于控制器,我有:

<?php namespace App\Http\Controllers; 

use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 


class controllers extends Controller 
{ 

    public function get($action, $name=null) 
    { 
    return view('actions.' . $action, ['name' => $name]); 

    } 

    public function post(Request $request) 
    { 


$this->validate($request, [ 
    'action' => 'required', 
    'name' => 'alpha|required' 
]); 

return view('actions.'.$request['action'] , ['action' =>  $request['action'], 'name'=>$this->transformName($request['name'])]); 
} 

private function transformName($name) 
{ 
    $add = "king "; 
    return $add.strtoupper($name); 
} 
} 

和用于视图,我有:

@extends('layouts.master') 

@section('content') 
    <div class="centered"> 
     <a href="{{route('get', ['action' => 'greet'])}}">greet</a> 
     <a href="{{route('get', ['action' => 'hug'])}}">hug</a> 
     <a href="{{route('get', ['action' => 'kiss'])}}">kiss</a> 
     <br > 
     <br > 
     @if (isset($errors) && count($errors) > 0) 
     <div class="alert alert-danger"> 
     <ul> 
      @foreach ($errors->all() as $error) 
       {!! $errors->first() !!} 
      @endforeach 
     </ul> 
    </div> 
     @endif  
     <form action="{{ route('post')}}" method="post"> 
      <label for="select-action">I want to...</label> 
      <select id="select-action" name="action"> 
       <option value="greet">greet</option> 
       <option value="hug">hug</option> 
       <option value="kiss">kiss</option> 
      </select> 
      <input type="text" name="name"> 
      <button type="submit">action</button> 
      <input type="hidden" name="_token" value="{{Session::token()}}"> 
     </form> 
    </div> 
    @endsection 

如果删除路由的中间件,var错误工作正常。

我该如何解决这个问题?

谢谢。

+0

中间件的代码在哪里? – Rottingham

+0

中间件的代码是在kernel.php –

回答

0

如果您使用的是最新版本的Laravel 5.2,则应该从routes中删除web中间件。现在它会自动应用于所有路线,如果您尝试手动添加它,则会导致不同的错误。

+0

只有一个问题,以便案例然后使用:web中间件从路由? –

+0

对不起,我不明白你的问题。请你再说一遍。 –

+0

对不起,在这种情况下,它将被用于路由中的网络中间件 –