Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inny][Laravel5] Pełny routing na sluggach z bazy danych
dado
post
Post #1





Grupa: Zarejestrowani
Postów: 194
Pomógł: 2
Dołączył: 12.04.2004
Skąd: Częstochowa

Ostrzeżenie: (10%)
X----


Laravel 5.1

Nadziobałem własny routing pozwalający na użycie pełnych slugów: adres strona.pl/to-jest-jakis-tam-slug wywołuje odpwiadający slugowi kontroler akcji parametry. efekty uzyskałem poprzez middleware-a. Wszystko działa fajnie ale jest jeden poważny problem. Jeśli nie ma zdefiniowanego routingu w bazie uzyte w middleware return $next($request); nie powoduje szukania w innych regułach routingu (np cześć administracyjna w ścieżce /admin ) tylko wyświetla pustą stronę.
Czy wiecie może jak można poradzić sobie z tym problemem? Np czy jest jakiś parametr dający możliwość dodania wykluczeń do danej reguły routingu? Ktoś? Coś?

Plik middlewarea:
  1. <?php
  2.  
  3. namespace App\Modules\Front\Http\Middleware;
  4.  
  5. use App;
  6. use Closure;
  7. use Route;
  8. use App\Modules\Front\Models\SluggableModel;
  9.  
  10. class FrontendSlugRoute
  11. {
  12.  
  13. /**
  14.   * Handle an incoming request.
  15.   *
  16.   * @param \Illuminate\Http\Request $request
  17.   * @param \Closure $next
  18.   * @internal param $slug
  19.   * @return mixed
  20.   */
  21. public function handle($request, Closure $next)
  22. {
  23. if(isset($request->slug) && !empty($request->slug)){
  24. if($slug = SluggableModel::where('slug', $request->slug)->first()){
  25.  
  26. App::call([app($slug->controller), $slug->action], $slug->params);
  27. }
  28. else{
  29. return $next($request);
  30. }
  31. }
  32. else{
  33. return $next($request);
  34. }
  35. }
  36. }


zawartość pliku route.php dla tego routingu
  1. Route::get('/{slug}', ['as' => 'sluggable', 'middleware' => 'sluggable', function () {
  2.  
  3. }])->where('slug', '.*');


Ten post edytował dado 5.01.2016, 14:43:15
Go to the top of the page
+Quote Post

Posty w temacie
- dado   [inny][Laravel5] Pełny routing na sluggach z bazy danych   5.01.2016, 14:40:38
- - Pyton_000   Hmm.. Nie za bardzo rozumiem a co chodzi ale może ...   5.01.2016, 14:55:27
- - dado   Widziałem już tą paczkę. Niestety nie pozwala ona ...   5.01.2016, 15:01:49
- - Pyton_000   Bo to ma być ostatni routing który łapie wszystko ...   5.01.2016, 15:08:30
- - dado   Racja to rzeczywiście załatwiało by sprawę gdyby p...   5.01.2016, 15:18:29
- - Pyton_000   Jeśli robisz route:list to ta lista wynikowa jest ...   5.01.2016, 15:22:10
- - dado   No niestety nie działa tak jak piszesz. Owszem zał...   6.01.2016, 12:10:22
- - Pyton_000   Ok. W takim razie w config/app.php znajdź: KodIl...   6.01.2016, 12:55:23
- - dado   Hej, też nie działa niestety. W middleware wylist...   7.01.2016, 09:50:45
- - Pyton_000   Aaaaa dobra... Mój błąd. Nie zauważyłem że tego sl...   7.01.2016, 10:04:00
- - dado   Zrobiłem tak jak pisałeś i niestety routing jest n...   7.01.2016, 13:01:05
- - phpion   Wprawdzie z Laravelem styczności nie miałem, ale s...   7.01.2016, 13:07:20
- - Pyton_000   Da się zrobić. ale z racji tego że używasz tego Sl...   7.01.2016, 13:07:48
- - phpion   Ok, niech sobie pasuje do wzorca *. Ja ten warunek...   7.01.2016, 13:16:33
- - Pyton_000   Tak, middleware jest takim filtrem. Jednak odpala...   7.01.2016, 13:42:49
- - phpion   Zgadza się, ale jeśli założymy, że cały routing sl...   7.01.2016, 13:49:32
- - memory   Nie łatwiej zrobić moduł z tym routingiem i dodać ...   7.01.2016, 14:05:04
- - dado   Najprościej byłoby po order z manifestu. Sprawdzał...   7.01.2016, 14:40:05
|- - phpion   Cytat(dado @ 7.01.2016, 14:40:05 ) @p...   7.01.2016, 14:59:45
- - Pyton_000   @dado jeśli faktycznie jest tam coś takiego jak or...   7.01.2016, 15:13:55
- - dado   Udało się w końcu po parametrze order mainfestu ...   8.01.2016, 09:02:26


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:55