2016-11-16 5 views
1

Текущий Настройка:Laravel - передать данные от функции к функции другого маршрута

На данный момент пользователь может производить поиск, который вызывает почтовый маршрут. Затем он возвращает различные вещи, основанные на поиске на маршрут search.results, где он отображается в URL как place/town.

Как передать переменные lat и lng формы search функции showResults. Я пробовал ->with(), который возвращает null, а также включает их в текущий массив [$place, $town], но они затем включены в URL-адрес.

Маршруты:

Route::post('search', '[email protected]')->name('search'); 
Route::get('{place}/{town}', '[email protected]')->name('search.results'); 

Контроллер:

Функция поиска: Функция

public function search(Request $request) 
{ 
    $place =$request->get('name'); 
    $lat = $request->get('lat'); 
    $lng = $request->get('lng'); 

    return redirect()->route('search.results', [$place, $town]); 
} 

showResults (пусто на данный момент):

public function showResults() 
{ 
    // I want to use lat and lng here. 
} 

ответ

1

Вам необходимо использовать Laravel Session.

return redirect() 
    ->route('search.results', [$place, $town]) 
    ->with('lng', $lng) 
    ->with('lat', $lat); 

И в вашем fonction

public function showResults(Request $request) 
{ 
    $lat = $request->session()->get('lat'); 
    $lng = $request->session()->get('lng'); 
} 
+0

Я был очень близко! Спасибо. Будет ли какая-нибудь причина, по которой мое значение широты не будет отправлено - '-1 -140477773999999874" Это то, что показывает, когда я 'dd()' переменная в функции 'search', но возвращает' null' в 'showResults' , Долгота работает отлично? – Ben

+0

как вы отправляете свои две переменные? Вы можете связать несколько 'с', как это' -> с ('lat', $ lat) -> с ('lng', $ lng); ' – Roadirsh

+0

Множество' -> с() 'отлично работало. Спасибо за помощь! – Ben

Смежные вопросы