Я очень новичок в 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 Routing и контроллер для поиска
Мои маршруты:
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>
PagesController:
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');
}
}
SearchController:
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;
}
}
}
}
Мои взгляды:
В представлениях для провайдера поиска я называю город, штат, провайдера следующим образом:
{{$data[0]->City}},{{$data[0]->State}},{{$data[0]->{'Provider Name'}}
Это те переменные, которые я хотел бы использовать в пользовательском маршруте
Пример:
Задача ещё не решена.
Других решений пока нет …