2017-08-30 114 views
0

laravel5.2,我在Requests目錄下創建UserRequest.php,但在控制器中,顯示錯誤public function add(UserRequest $request),但使用public function add(Request $request)屬於正常。

UserRequest

namespace App\Http\Requests; 

use App\Http\Requests\Request; 

class UserRequest 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 [ 
      'user_sn' => 'required|unique', 
      'user_name' => 'required', 
      'email'  => 'required|unique', 
      'password' => 'required', 
     ]; 
    } 
} 

UserController中

namespace App\Http\Controllers; 

use App\Http\Requests\UserRequest; 
use Illuminate\Support\Facades\DB; 
use Illuminate\Support\Facades\Validator; 

class UserController extends Controller 
{ 

    public function add(UserRequest $request) 
    { 
     if ($request->get('dosubmit')) { 
      $validator = Validator::make($request->all(), $request 
       ->rules(), $request->messages()); 
      if ($validator->fails()) { 
       return redirect('user/add')->withErrors($validator) 
        ->withInput(); 
      } 
     } 
     $corporation_list = DB::table('corporation')->get(); 
     $department_list = DB::table('department')->get(); 

     return view('user.add', ['corporation_list' => $corporation_list, 'department_list' => $department_list]); 
    } 
} 

路線

Route::group(['middleware'],function(){ 
Route::any('user/add',['as'=>'user.add','uses'=>'[email protected]']); 

});

+1

您需要在文件上添加'use'聲明'UserRequest'!例如:'use App \ Http \ Requests \ UserRequest;' –

+0

你是用add()方法來顯示錶單還是處理表單提交或兩者兼而有之? –

+0

是的,兩者都是問題嗎? – zahdxj

回答

1

通常有2個原因可能導致此問題。

  1. 你還沒有加入use聲明爲UserRequest

    在控制器的頂部(在class以上)加:

    use App\Http\Requests\UserRequest 
    

    假設是正確的命名空間。

  2. 您可能需要運行composer dump-autoload以確保該類已添加到自動裝載器中。

編輯

首先,用下面的方法代替add()方法:

Route::any('user/add',['as'=>'user.add','uses'=>'UserControl‌​[email protected]']) 

到:

public function create() 
{ 
    $corporation_list = DB::table('corporation')->get(); 
    $department_list = DB::table('department')->get(); 

    return view('user.add', compact('corporation_list', 'department_list')); 
} 

public function store(UserRequest $request) 
{ 
    // If you get to this point the validation will have passed 

    // Process the request 
} 

然後你的路線從改變:

Route::get('user/add', ['as' => 'user.add', 'uses' => 'UserControl‌​[email protected]']); 
Route::post('user/add', ['as' => 'user.store', 'uses' => 'UserControl‌​[email protected]']); 

顯然,隨意在路線的as改變什麼,他們應該獨一無二雖然。

最後,我會建議看看Resource Controllers這是一種RESTful方法。

希望這會有所幫助!

+0

your issue1我已經使用這個語句,所以我嘗試了第2個問題,但問題仍然存在,當我在我的項目中使用iframe時出現此問題,當我點擊左側菜單時,右側顯示「歡迎頁面」不正確page.but當我使用請求$請求,右側顯示右側 – zahdxj

+0

@zahdxj你能夠將'UserRequest'的代碼添加到你的問題嗎? –

+0

我已經發布我的UserRequest – zahdxj

0

的問題是,你還沒有確定UserController的您正在使用UserRequest文件

use App\Http\Requests\UserRequest 

它會解決這個問題

+0

我已經使用過控制器中的狀態 – zahdxj