Patrząc na Str :: ślimaka dla mojego pokolenia frontend URL, ale po prostu zastanawiasz się, jak wy go o jego realizacji z tras itp, na przykład, w jaki sposób wy pójść o zmianie http://www.example.com/courses/1 do http://www.example.com/courses/this-courselaravel Ślimaki z ul :: ślimak
Odpowiedz
OK, zrobiłem to w ten sposób:
// I have a slug field in my courses table and a slug field in my categories table, along with a category_id field in my courses table.
// Route
Route::get('courses/{categorySlug}/{slug?}', function($categorySlug, $slug) {
$course = Course::leftJoin('categories', 'categories.id', 'courses.category_id')
->where('categories.slug', $categorySlug)
->where('courses.slug', $slug)
->firstOrFail();
return View::make('courses.show')->with('course', $course);
});
działa jak czar. Otrzymuje zmienne $ categorySlug i $ slug, a następnie używa ich do filtrowania Eloquent Course Course, aby uzyskać prawidłowy obiekt kursu z bazy danych.
EDIT: Można wygenerować URL w widoku jak:
http://www.example.com/courses/it-training/mcse
Robiąc coś takiego:
<a href="{{ URL::to('courses/'.$course->category->parentCategorySlug($course->category->parent_id).'/'.$course->category->slug.'/'. $course->slug) }}" title="{{ $course->title }}">{{ $course->title }}</a>
A mają metodę w mojej kategorii jak poniżej, które pobiera ślimak kategorii nadrzędnej. Można to osiągnąć lepiej, używając choćby klasy prezentera, która pozwoliłaby ci po prostu użyć $ course-> url, ale jeszcze tego nie robiłem. Zaktualizuję odpowiedź, kiedy to zrobię.
public function parentCategorySlug($parentId)
{
if ($parentId === '0')
{
return $this->slug;
}
return $this->where('id', $parentId)->first()->slug;
}
Mam również realizowany podobny mapowanie adresów URL, ale wolałem mieć zarówno identyfikator i pocisk w żądanego adresu URL, na przykład:
http://www.example.com/courses/1/my-laravel-course
Metoda ta pozwala mi uzyskać zażądał od obiektu ID z adresu URL podanego w argumencie ID, a nie zapisywania wtyczek w tabeli DB.
Route::post('courses/(:num)/(:any)', function ($courseid, $slug) {
$course = Course::where('id', '=', $courseid)->get();
return View::make('courses.show')->with('course', $course);
}
Możesz użyć cvierbrock's Eloquent-Sluggable package.
Jeśli chodzi o mnie, stworzyłem funkcję pomocniczą i wykorzystałem następującą metodę zaczerpniętą z here.
public static function getSlug($title, $model) {
$slug = Str::slug($title);
$slugCount = count($model->whereRaw("url REGEXP '^{$slug}(-[0-9]*)?$'")->get());
return ($slugCount > 0) ? "{$slug}-{$slugCount}" : $slug;
}
Można utworzyć Powiązany model Slug i zbliżyć kurs w swoich metodach tak:
$course = Slug::where('slug', $slug) -> firstOrFail() -> course;
- 1. Laravel wygenerować ślimak przed zapisaniem
- 2. Obsługi edycji ślimaki z przyjazną ID
- 3. FriendlyID koreańskich ślimaki
- 4. Get ślimak z aktualnym adresem URL
- 5. Flexbox z listą ul
- 6. Poprawne listy wewnątrz list - ul wewnątrz ul
- 7. centrowania ul z unosił li
- 8. kod Java/biblioteki do generowania ślimaki (do zastosowania w ładnych adresów URL)
- 9. Wordpress zapytania pojedynczy post przez ślimak
- 10. Niestandardowe Page ślimak z wielu ciągów zapytań wykorzystujących htaccess
- 11. HTML5 UL LI Draggable
- 12. Aktualizacja z Laravel 5.2 do Laravel 5.3
- 13. laravel/laravel vs laravel/framework
- 14. poziomy pasek przewijania dla ul
- 15. JQuery ul li wybierz listę
- 16. znaczenie "this.el" w $ ('ul', this.el)
- 17. Jak sprawić, by Django tworzyło ślimaki ze znaków Unicode?
- 18. jquery: jeśli ul jest pusty
- 19. UL + CSS dla układu siatki
- 20. UL sufiks vs uint32_t cast
- 21. centrowania ul pływaki wewnątrz div
- 22. jQuery Usuń LI z UL z hiperłącze w LI
- 23. Wordpress: Jak zdobyć ślimak znacznika na stronie tagu?
- 24. CORS z Laravel 4
- 25. Praca z laravel tinker
- 26. Tworzenie Ślimaków z tytułów?
- 27. dodać/usunąć aktywną klasę dla listy ul z jquery?
- 28. unikaj podwójnych zdarzeń (onclick) z zagnieżdżonymi ul/li
- 29. Akordeon/składany nie działa z nawigacją ul/li
- 30. datepicker jquery: Konwertuj listę rozwijaną do ul
jak mogę dostać ten adres w sterowniku, aby go wyświetlić? – cawecoy
Adresy URL powinny być niepowtarzalne, w tym przypadku otrzymasz to samo dla '/ 1/my-laravel-course' i'/1/lorem-ipsum' na przykład –