ユーザーは開始位置を入力できるフォームを用意しています。この位置に中心のマップに移動します。彼はこのステップをスキップして地図に直接行くこともできます。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キーになります。)私がここで起きているのは、デバッグバーがパラメータの値の代わりに '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 => 'startLocation'
私はURLを自分で修正する
へ http://laravel.dev/Map/Miami => Debugbar表示されるでしょう「マイアミを示すだろうDebugbar '間違った内容を表示するのはDebugbarだけではありません。私はこの変数に基づいてジオコードしようとすると、 'startLocation'と同様に内容を見るので失敗します。
私はこの問題を2つの経路を作成することで解決できるかもしれません.1つはパラメータなしで、もう1つは経路を作成することができます。
なぜ「?」を使用していますか?これを削除する –
@ImtiazPabel '? 'は、ルートパラメータがオプションであり、完全に有効であることを意味します。 – Jonathon
ルートパラメータは 'GET'パラメータと同じではないことに注意してください(URLの'? 'に続くクエリ文字列から)。 '/ Map/Miami'は' $ startLocation'の '' Miami ''を正しく返します。 '/ Map/startloaction?Miami'は' $ startLocation'の '' startLocation "'を正しく表示します。実際にURLを選択するだけで、URLと 'GET'パラメータの両方を使用しようとしています。 –