Mam nadzieję, że ktoś może mi pomóc dzięki dynamicznemu routingowi dla adresów URL, które mogą mieć wiele segmentów. Szukałem w sieci, ale nic, co znalazłem, nie pomogło mi w mojej konkretnej sytuacji.Routing dynamiczny w aplikacji Laravel 5 Aplikacja
Małe tło ... kilka lat temu opracowałem pakiet CMS dla niestandardowych stron internetowych klientów, który został zbudowany na CodeIgniter. Ten pakiet CMS ma kilka modułów (strony, blog, kalendarz, zapytania itp.). W przypadku modułu Strony buforowałem trasy do pliku konfiguracyjnego "trasy niestandardowe", które powiązało całą trasę dla strony (w tym rodzica, dziadka, itp.) Z identyfikatorem strony. Zrobiłem to tak, że nie musiałem wykonywać odnośników do bazy danych, aby znaleźć stronę do wyświetlenia.
Obecnie pracuję nad przebudowaniem tego pakietu CMS przy użyciu Laravel (5.1) [podczas gdy uczę się Laravel]. Zanim przejdę do pracy z modułem Strony w nowej wersji pakietu, muszę poznać sytuację routingu.
wiem, że mogę zrobić coś takiego ...
// routes.php
Route::get('{slug}', ['uses' => '[email protected]']);
// PageController.php
class PageController extends Controller
{
public function view($slug)
{
// do a query to get the page by the slug
// display the view
}
}
A to będzie działać, jeśli nie pozwalają zagnieżdżonych stron, ale robię. I tylko wymuszam unikalność ślimaka w oparciu o rodzica. Więc nie może być więcej niż jedna strona z łyk Fargo ...
- lokalizacje/Fargo
- kierowniczym/Fargo
Jak z pakietem że zbudowany przy użyciu CodeIgniter, ja chciałby móc uniknąć dodatkowych wyszukiwań bazy danych, aby znaleźć właściwą stronę do wyświetlenia.
Moja początkowa myśl polegała na utworzeniu pliku konfiguracyjnego, który miałby dynamiczne trasy, tak jak zrobiłem ze starą wersją systemu. Trasy będą się zmieniać tylko w określonych momentach (kiedy strona jest tworzona, kiedy slug jest modyfikowany, kiedy rodzic jest zmieniany), więc "buforowanie" ich będzie działało świetnie. Ale wciąż jestem nowa w Laravel, więc nie jestem pewien, jaki byłby najlepszy sposób, aby to osiągnąć.
Udało mi się ustalić, że działają następujące trasy. Ale czy to najlepszy sposób, aby to ustawić?
Route::get('about/foobar', function(){
return App::make('\App\Http\Controllers\PageController')->callAction('view', [123]);
});
Route::get('foobar', function(){
return App::make('\App\Http\Controllers\PageController')->callAction('view', [345]);
});
Zasadniczo chciałbym związać konkretną trasą do konkretnej strony ID, gdy strona jest tworzona (lub gdy ślimak lub rodzic są zmieniane).
Czy po prostu nadmiernie kompiluję rzeczy?
Każda pomoc lub skierowanie w tym kierunku byłoby bardzo cenne.
Dzięki!
"Czy po prostu nadmiernie kompiluję rzeczy?", IMO 'Tak'. Ponadto te trasy wyglądają jak statyczne, nie ma dynamizmu, jeśli nie zezwalasz na zastępowanie "ID". Każda trasa jest po prostu związana z jednym konkretnym "identyfikatorem". –
W jaki sposób mam zamiar skonfigurować, nie sądzę, że istnieje sposób, aby użyć dynamicznej trasy, która nie wymagałaby ode mnie dodatkowych zapytań do bazy danych, aby znaleźć właściwą stronę. Użyję dynamicznych tras dla innych modułów, takich jak Blog, ale dla zwykłych stron, nie sądzę, że to zadziała. – Becky