我正在用laravel構建一個簡單的應用程序,並且遇到了無法工作的重定向問題。我目前有一個註冊表單,該表單發佈到一個控制器方法,該方法在模型上調用一個靜態方法來處理驗證,並將該用戶保存到數據庫。Laravel - 從模型重定向?
這是我的代碼到目前爲止。
routes.php文件
Route::get('/', function()
{
return View::make('index');
});
Route::post('/sign_up', '[email protected]_user');
userController.php
public function create_user()
{
$data = Input::all();
USER::validate($data);
}
user.php的現在
public static function validate($input)
{
$rules = array
(
'firstname' => 'Required|Min:3|Max:80|Alpha',
'lastname' => 'Required|Min:3|Max:80|Alpha',
'password' =>'Required|AlphaNum|Between:4,12|Confirmed',
'password_confirmation'=>'Required|AlphaNum|Between:4,12'
);
$v = Validator::make($input, $rules);
if($v->passes())
{
$user = new User;
$user->firstname = Input::get('firstname');
$user->lastname = Input::get('lastname');
$user->password = Input::get('password');
return var_dump($user); // Save user code here
}
return Redirect::to('/')->withErrors($v);
}
,因爲它代表我只是得到一個空白屏幕。沒有錯誤,我甚至可以改變重定向:到我想要的任何路線,即使沒有設置,但仍然不會給出任何錯誤。
我還是設法得到它的工作使得對UserController的以下變化和用戶:
public function create_user()
{
$data = Input::all();
$response = USER::validate($data);
**if($response == 2)**
{
return Redirect::to('/');
}
}
user.php的
$v = Validator::make($input, $rules);
if($v->passes())
{
$user = new User;
$user->firstname = Input::get('firstname');
$user->lastname = Input::get('lastname');
$user->password = Input::get('password');
return var_dump($user);
}
return 2;
}
可正常工作調用來自控制器的重定向,而不是模型。
這使我想到了幾個問題。
爲什麼它在控制器而不是模型中工作,有沒有辦法使它按照我原先的意圖工作?
如果不是,我該如何從驗證中抓取錯誤?
這是一種糟糕的方式來佈局我的應用程序?我試圖保持模型中的邏輯步驟,但到目前爲止,將它投入控制器並完成它似乎更容易。
感謝您的回覆。
如果你什麼'回報用戶::驗證($的數據);在你的控制器'? (控制器是爲了返回一個響應,這樣的重定向)順便說一句,我通常把所有的驗證和響應在控制器 –
這工作!我對這種錯誤感到很失落,但你活着,你學習。謝謝! –