Передача переменных из маршрута в контроллер

У меня здесь большая проблема, и я не знаю, как ее решить.

routes.php:

Route::group(array('prefix' => 'user'), function() { Route::post('/{user}/{char_name}/selectedok', array( 'as' => 'char-profile-post', 'uses' => 'ProfileController@postDropDownList' )); Route::get('/{user}/{char_name}/selectedok', array( 'as' => 'char-profile-get', 'uses' => 'ProfileController@getDropDownList' )); }); 

ProfileController.php:

 public function getDropDownList() { return View::make('layout.profile'); } public function postDropDownList($user, $char_name) { if (Auth::check()) { $user = Auth::user(); $selected_char = Input::get('choose'); $char_name = User::find($user->id)->characters()->where('char_name', '=', $selected_char)->first(); return Redirect::route('char-profile-get', array($user->username, $char_name->char_dynasty, $char_name->char_name)) ->with('user', $user->username) ->with('charname', $char_name->char_name) ->with('dynastyname', $char_name->char_dynasty); } } 

Да, я знаю, что перенаправляю на char-profile-get с 3 параметрами, но мне нужно только 2. Меня это не беспокоит. Как вы заметили, я перенаправляю использование ->with . Единственный способ, которым я буду печатать данные в представлении, – это сделать это в представлении:

Ваш выбранный персонаж

 {{ Session::get('charname') }} {{ Session::get('dynastyname')}} 

Если я не перезаписываю переменные в postDropDownList($user, $char_name) мой URL будет выглядеть следующим образом:

  http://localhost/CaughtMiddle/tutorial/public/index.php/user/%7Buser%7D/%7Bchar_name%7D/selectedok 

вместо этого:

  http://localhost/CaughtMiddle/tutorial/public/index.php/user/SerbanSpire/Spirescu/selectedok?Serban 

Поэтому вердикт. Параметры в функциях никогда не получат никаких данных. Я даже не знаю, как их описывать, параметры функций равны нулю, даже если я перенаправляюсь на маршрут получения с правильными данными. var_dump($user) или var_dump($char_name) ничего не печатает в браузере, dd($user) и dd($char_name) также ничего не печатает и не print_r() .

Является ли мое решение жизнеспособным? Переназначение с помощью ->with и сохранение данных в сеансе? Поскольку это решение позволит мне использовать Session::get() много, каждый раз, когда я использую информацию из базы данных, но я не обновляю ее! Останови меня, если я ошибаюсь.

Почему переменная не связана с параметрами моих функций? Если мои функции не будут иметь никаких параметров, код будет работать одинаково. В принципе, эти параметры не нужны.

Наконец-то мне удалось решить мою проблему. Я создал новый файл CharacterController.php, и я включил функцию get внутри нового контроллера. Таким образом, параметры функции будут успешно прибывать и быть полезными.

Вы можете попробовать это

 $user = Auth::user(); $char = $user->characters()->where('char_name', Input::get('choose'))->first(); return Redirect::route('char-profile-get') ->with('user', $user->username) ->with('charname', $char->char_name) ->with('dynastyname', $char->char_dynasty); 

Если я понимаю правильно, вам просто нужно

  return Redirect::route('char-profile-get', array( 'username' => $user->username, 'char_name' => $char_name->char_name)) ->with('user', $user->username) ->with('charname', $char_name->char_name) ->with('dynastyname', $char_name->char_dynasty); 

потому что вы передаете пустой массив. теперь используйте Session :: get ('username') и Session :: get ('char_name') непосредственно в представлении (layout.profile)