У меня здесь большая проблема, и я не знаю, как ее решить.
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)