Ich habe ein Formular, wo ein Benutzer einen Startort eingeben kann, beim Einreichen geht er auf eine Karte, die auf diesen Ort zentriert ist. Er kann diesen Schritt auch überspringen und direkt zur Karte gehen. (Dies ist die vereinfachte Version, um die ganze Hintergrundstory zu überspringen)Laravel zeigt den Parameternamen anstelle des Wertes (bei Verwendung optionaler Parameter in der Route)
Dies ist das erste Stück Code, wenn der Benutzer das Formular verwendet hat, wird es den Startort aus dem Formular übernehmen und auf die Karte umleiten: (egal die Planung variabel, es wird immer für die Zwecke dieser Fall) ‚eigenen‘ sein
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');
}
} ]);
Dies ist die Karte Route ist die Startlocation optional wie oben erläutert. (Der API-Schlüssel wäre mein persönlicher API-Schlüssel.) Was ich hier sehe, ist, dass die Debugbar 'startLocation' anstelle des Wertes des Parameters anzeigt. (Name statt Wert)
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);
}]);
Ich begann mit der URL zu spielen, um zu sehen, was los war. Unter der Annahme der Benutzer 'Miami' eingegeben als Startlocation dies in folgenden URL zur Folge hätte:
http://laravel.dev/Map/startLocation?Miami => DebugBar
'Startlocation' zeigen würde, wenn ich die URL selbst http://laravel.dev/Map/Miami => DebugBar ändern würde zeigen, ‚Miami '
Es ist nicht nur Debugbar, die falsche Inhalte zeigen würde. Ich versuche, basierend auf dieser Variablen zu geocodieren, und es schlägt fehl, weil es den Inhalt auch als 'startLocation' ansieht.
Ich kann dieses Problem möglicherweise lösen, indem ich zwei Routen erstelle, eine mit und eine ohne Parameter, aber ich denke, ich vermisse gerade etwas Offensichtliches.
Warum verwenden Sie "?" in Routen, entfernen Sie diese –
@ImtiazPabel Das '?' bedeutet, dass der Parameter route optional und absolut gültig ist. – Jonathon
Beachten Sie, dass die Parameter der Route nicht mit denen der Parameter 'GET' übereinstimmen (aus der Abfragezeichenfolge, die in der URL nach '?' Folgt). '/ Map/Miami' würde" Miami "' für '$ startLocation' korrekt zurückgeben, das gleiche wie'/Map/startlocation? Miami' würde '' startLocation "' für '$ startLocation' korrekt anzeigen. So ziemlich Sie versuchen, URL und 'GET' Parameter zu verwenden, wenn Sie wirklich nur einen auswählen sollten. –