У меня есть форма, в которой пользователь может ввести начальное местоположение, при отправке он отправится на карту с центром в этом месте. Он также может просто пропустить этот шаг и перейти на карту напрямую. (это упрощенная версия, чтобы пропустить весь фоновый рассказ)Laravel показывает имя параметра вместо значения (при использовании необязательного параметра в маршруте)
Это первый фрагмент кода, когда пользователь использовал форму, в которой он примет начальное местоположение из формы и перенаправляется на карту: (неважно переменная планирования, оно всегда будет «своим» для целей настоящего дела)
Route::post('InitiateUserTrip', ['as' => 'InitiateUserTrip', function(WelcomeFormRequest $request)
{
if (Input::get('planning') == 'own') {
return Redirect::route('Map',array('startLocation', Input::get('startLocation')));
} else {
return view('welcome');
}
} ]);
Это карта маршрут, startLocation не является обязательным, как описано выше. (API-ключ был бы моим личным API-интерфейсом API.) Что я вижу здесь, так это то, что debugbar показывает «startLocation» вместо значения параметра. (имя вместо значения)
Route::get('Map/{startLocation?}', ['as' => 'Map', function($startLocation = null)
{
$map = new Map('API KEY',$startLocation,'GMainMap');
$googleMap = $map->getMap();
$node = new Node();
$node->loadBySelection('ALL');
$nodes = $node->getNodes();
\Debugbar::info("Map: " . $startLocation);
return View::make('map')->with('map', $googleMap)
->with('nodes',$nodes)
->with('startLocation',$startLocation);
}]);
Я начал играть с URL-адресом, чтобы узнать, что происходит. Предполагая, что пользователь ввел «Майами», как startLocation это приведет к следующему URL-адресу:
http://laravel.dev/Map/startLocation?Miami => DebugBar покажет «startLocation»
Когда я модифицировать URL-адрес себя http://laravel.dev/Map/Miami => DebugBar бы показать «Майами '
Это не просто Debugbar, который будет показывать неправильное содержимое. Я пытаюсь геокодировать на основе этой переменной, и она терпит неудачу, потому что она видит содержимое как «startLocation».
Возможно, я смогу решить эту проблему, создав два маршрута: один с одним и без параметров, но, полагаю, я просто пропустил что-то очевидное.
Почему вы используете "?" в маршрутах, удалите это –
@ImtiazPabel. '' 'означает, что параметр маршрута является необязательным и полностью действительным. – Jonathon
Следует иметь в виду, что параметры маршрута не совпадают с параметрами 'GET' (из строки запроса, следующей за'? 'В URL-адресе). '/ Map/Miami' верно вернет' 'Майами'' для' $ startLocation', то же самое, что '/ Map/startloaction? Miami' будет * правильно * показать' "startLocation" 'для' $ startLocation'. В значительной степени вы пытаетесь использовать как URL, так и параметры GET, когда вам действительно нужно просто выбрать один. –