![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Czy w Laravel'u można stworzyć tak routes abym nie musiał wypisywać wszystkich stron po kolei tylko aby były one pobierane z bazy danych? Przykładowo oprogramowanie ma 100 stron, to w takim przypadku musiałbym wypisać 100 razy: Route::get(….. Ten post edytował Randallmaster 28.07.2015, 11:52:45 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kod Route::get('/{slug}', function($slug){
// 'slug' to indentyfikator strony w Twojej bazie }); Ten post edytował ctom 28.07.2015, 13:31:59 -------------------- Polecam MyDevil hosting idealny dla deweloperów
|
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
jest gdzieś dokumentacja użytkowania {slug}, na pierwszy rzut oka za dużo nie ma, może mógłbyś coś polecić? na Laravel i Laracasts tylko na forum trochę opisują, w dokumentacji chyba nie ma
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ale co Ty chcesz opisywać?
Wrzucasz takiego route jako ostatni i kierujesz na jakiś kontroler. Tam wyszukujesz w bazie to co dostaniesz w parametrze i jak jest to wyświetlasz coś tam. |
|
|
![]() ![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
ok wykonałem takie coś:
no i jeżeli wpisze /pages -> to wyświetla pages a jeżeli wpisze /pages/param1/param2 -> to już strona wywala błąd. Czy parametry też można w bazie trzymać? wiem że mogę zrobić: /{slug}/{slug}/{slug}/{slug}/ no ale nie wiem ille zmiennych będę miał czy można zrobić to jakoś uniwersalnie? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
no pięknie o to mi właśnie chodziło
![]() ![]() ostatnie pytanie?. prędzej miałem np. pod pages/index, listę stron z powodu zrobienia funkcji slug. wszystko mi zniknęło. Jak teraz z metody wyświetlić stronę? mam : Route::get('/{slug}', 'PagesController@validator')->where('slug', '.*'); i jak np. w validator wyświetlić stronę PagesController@edit z parametrem o id 1 Ten post edytował Randallmaster 11.08.2015, 19:19:30 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Musisz sobie parsować ręcznie adres otrzymany.
Robisz explode po / i np. if(is_numeric($index[1])) // show pages id = $index[1] |
|
|
![]() ![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
zrobiłem to
![]()
już wiem return $this->index(); np. no i jeszcze jedno?. W którym miejscu najlepiej wykonać sprawdzanie $slug? i przesyłać do danego widoku?bo w tym przypadku nie mam problemu wyświetlam widok z tego samego kontrolera robiąc to za pomocą $this->index(), a co w przypadku jeśli będę miał inny kontroler? trochę bezsensu będzie to abym definiował każdy kontroler osobno. Ten post edytował Randallmaster 11.08.2015, 20:52:01 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Generalnie ten route ze slug musi być na samym końcu pliku routes.php inaczej będzie ci przesłaniał wszystkie route po nim.
I nie za bardzo rozumiem o tych kontrolerach... |
|
|
![]() ![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
aktualnie pracuje jeszcze na cakephp i tam route nie trzeba było definiować. Jest tam (controller + action + parametrs) dzięki temu mogłem zbudować interfejs do zarządzania rolami uprawnieniami stron oraz użytkowników (wszystko w jednym miejscu). W beforeFilter wykonałem sprawdzanie czy strona np. pages/edit już istnieje i czy użytkownik ma do niej uprawnienia. Jeżeli tak to przepuszczało do widoku. Laravel 5 skonstruowany jest na route.php no i z tego co teraz widzę musiałbym dodawać tam każdą stronę no i mam możliwość definiowania uprawnień za pomocą middleware. w Cakephp mam w podstawie około 150 stron. To w laraver musiałbym te 150 stron wpisać w route. A chcę poprostu rozwiązać to za pomocą podobnego interface. I trzymać wszystko w bazie w jednym miejscu. Dlatego myślałem żeby w route zostawić tylko taki wpis:
A resztę sprawdzającą czyli czy użytkownik ma dostęp czy nie, sprawdzić w klasie i przekierowywać na konkretny widok. Ten post edytował Randallmaster 12.08.2015, 07:21:37 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ale co dla Ciebie oznacza "150 stron"
Czy jest to 150 treści czyli artykułów?? Bo jeśli tak, to tak; ten route wystarczy. Tak, w cake jest global route które mapuje /controler/action/params... Tutaj też możesz to zrobić coś na zasadzie. Tak na szybko sklecona podobna funkcjonalność z CakePHP
i kontroller:
Ten post edytował Pyton_000 12.08.2015, 08:13:40 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
150 stron to mój podstawowy uniwersalny szablon*, którego używam do projektów (tworzenie użytkowników, uprawnienia, słowniki itp.), oczywiście będzie tego więcej w zależności od projektu, tylko odwołałem się do 150 bo to moja w chwili obecnej podstawa. Biorę się za sprawdzenie twojego kodu
![]() wyskoczył mi błąd Wywołanie strony pages/index/
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zamień route na taki:
Tylko tutaj jeszcze nie zadziała Method Injection które jest w Laravel. Ten post edytował Pyton_000 12.08.2015, 10:48:39 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
a z pomocą App:make można to wykonać ?
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
return $this->app->call([app($controller), $action], explode('/', $params));
return call_user_func([app($controller), $action], explode('/', $params)); tak czy tak nie działa ![]() BadMethodCallException in Controller.php line 283: Method [index] does not exist. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 223 Pomógł: 27 Dołączył: 16.04.2008 Skąd: Bakutilu Ostrzeżenie: (0%) ![]() ![]() |
No przecież masz info o błędzie Method [index] does not exist.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
napisałem powyżej że metoda istnieje. w PagesController a wywołuje stronę pages/index. więc powinno działać ;/
funkcja była jako private musiała być jako public i działa ![]() No i masz kolejny problem….. Jeżeli zrobię w taki sposóļ route to nie działa ten zapis (czyli sposobem powyżej):
Brakuje mi pomysłów, pomożecie ? ![]() |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wiesz ze względu na to że Laravel ma speyficzny Routing to będzie masa problemów z tym związana przy zastosowaniu tej protezy z Cake.
Zastanów się czy nie możesz tego jakoś inaczej rozwiązać bez tego route. Ja jak będę miał chwilkę to zerknę ocb. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 15:43 |