Я новичок в Laravel и смотрел бесплатные видео на Laracast, чтобы попытаться продвинуться как можно дальше. У меня есть простой поисковый ввод, который принимает почтовый индекс (например: 92804). Он ищет в базе данных и находит почтовый индекс, ищет «провайдера» в строке, а затем возвращает представление в зависимости от найденного провайдера (на данный момент существует 4 провайдера). Например: 92804->anaheim->ca->provider1, чтобы он возвращал представление provider1 с необходимыми данными (город и штат). Я заставил его работать до этого момента, но когда представление возвращается, оно имеет URL-адрес
www.domain.com/search?q=92804.
Как я могу сделать маршрут или маршруты, чтобы он показывался.
www.domain.com/{city}-{state}-{provider1}
Это будут переменные, поэтому в примере это будет
www.domain.com/anaheim-ca-provider1
Я искал здесь и нашел это: (но я считаю, что это для более старой версии Laravel) Маршрутизация и контроллер Laravel для поиска
Мои маршруты:
Route::get('/', 'PagesController@index');
Route::get('search',['uses' => 'SearchController@getSearch','as' => 'search']);
Route::get('/{city}-{state}-{zipcode}',['uses' => 'PagesController@provider1','as' => 'search.provider1']);
Route::get('/{city}-{state}-{zipcode}',['uses' => 'PagesController@provider2','as' => 'search.provider2']);
Route::get('/{city}-{state}-{zipcode}',['uses' => 'PagesController@provider3','as' => 'search.provider3']);
Route::get('/{city}-{state}-{zipcode}',['uses' => 'PagesController@provider4','as' => 'search.provider4'])
;
Моя форма в приветственном представлении:
<form action="search" method="get">
<input type="text" name="q" placeholder="Search.."/>
<button type="submit">Search</button>
</form>
Контроллер страниц:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class PagesController extends Controller
{
public function index()
{
return view('welcome');
}
public function provider1()
{
return view('providers/provider1/provider1Search');
}
public function provider2()
{
return view('providers/provider2/provider2Search');
}
public function provider3()
{
return view('providers/provider3/provider4Search');
}
public function provider4()
{
return view('providers/provider4/provider4Search');
}
}
Контроллер поиска:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
class SearchController extends Controller
{
public function getSearch(Request $request)
{
$keyword = $request->input('q');
$data = DB::select("SELECT * FROM `TABLE 13` WHERE `Zip Code` = '$keyword'");
$city = strtolower($data[0]->City);
$state = strtolower($data[0]->State);
$provider = strtolower($data[0]->{'Provider Name'});
$zipcode = $data[0]->{'Zip Code'};
if ($data[0]->{'Provider Name'})
{
switch ($data[0]->{'Provider Name'})
{
case "provider1":
return redirect()->route('search.provider1',[$city,$state,$zipcode])->with('data',$data);
break;
case "provider2":
return return redirect()->route('search.provider2',[$city,$state,$zipcode])->with('data',$data);
break;
case "provider3":
return return redirect()->route('search.provider3',[$city,$state,$zipcode])->with('data',$data);
break;
case "provider4":
return return redirect()->route('search.provider4',[$city,$state,$zipcode])->with('data',$data);
break;
}
}
}
}
Мои взгляды:
- provider1Поиск
- provider2Поиск
- провайдер3Поиск
- provider4Поиск
- добро пожаловать
В представлениях для providerSearch я называю город, штат, провайдер следующим образом:
{{$data[0]->City}},{{$data[0]->State}},{{$data[0]->{'Provider Name'}}
Это переменные, которые я хотел бы использовать в пользовательском маршруте.
Пример:
- почтовый индекс = 85257 = www.domain.com/scottsdale-az-provider1
- почтовый индекс = 92804 = www.domain.com/anaheim-ca-provider2
- почтовый индекс = 60605 = www.domain.com/chicago-il-provider3
- почтовый индекс = 01527 = www.domain.com/millbury-ma-provider4
q=xxxxx
и позволить контроллеру вернутьredirect()->route()
после получения данных? - person Joel Hinz   schedule 02.01.2016route('my-route-name', [$city, $state, $provider])
. - person Joel Hinz   schedule 02.01.2016