Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][Kohana]Routing, Routing w kohana po raz kolejny :)
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


Witam, mam znowu problemik z routingiem w Kohana. Mianowicie chcę zrobić tak że mamy adresy

Kod
strona.pl/admin/news/add
strona.pl/admin/news/edit/5
strona.pl/admin/gallery/add
... itd


mój routing wygląda następująco:

  1. Route::set('admin', '<controller>(/<action>(/<id>))',
  2. 'id' => '\d+',
  3. 'controller' => '(panel|news|gallery|films)',
  4. 'action' => '(add|edit|delete)'
  5. ))
  6. ->defaults(array(
  7. 'directory' => 'admin',
  8. 'controller' => 'panel',
  9. 'action' => 'index'
  10. ));


utworzyłem w folderze kontroler folder 'admin' a w nim kontroler panel.php. Jednak pojawia się błąd który mi nic nie mówi i nie nasuwa żadnego pomysłu
Kod
HTTP_Exception_404 [ 404 ]: The requested URL admin/index was not found on this server.


Dodam że znalazłem podobny routing u kolegi który działa (mu).

Pozdrawiam
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Kod
    Route::set('admin', '<controller>(/<action>(/<id>))',
    array(
    'id' => '\d+',
    'controller' => '(panel|news|gallery|films)',
    'action'    => '(add|edit|delete)'
    ))
    ->defaults(array(
    'directory'    => 'admin',
    'controller' => 'panel',
    'action' => 'index'
    ));
tu
Kod
    'controller' => '(panel|news|gallery|films)',
    'action'    => '(add|edit|delete)'
nie widze sensu z tego względu że jeżeli nie będziesz miał innych kontrolerów to dostaniesz 404

A co do tego
Kod
HTTP_Exception_404 [ 404 ]: The requested URL admin/index was not found on this server.

to nie masz zdefiniowanego kontrolera index do którego się odwołujesz.
Go to the top of the page
+Quote Post
klocu
post
Post #3





Grupa: Zarejestrowani
Postów: 291
Pomógł: 45
Dołączył: 21.08.2007

Ostrzeżenie: (0%)
-----


A Route::set nie powinien wyglądać tak:
  1. Route::set('default_subdir', '<directory>/<controller>(/<action>)') ...

fakt dajesz default setting, ale nie wskazujesz gdzie fizycznie w nazewnictwie ten podkatalog ma funkcjonować (w oparciu o Kohana 3.3)

Ten post edytował klocu 18.02.2013, 21:09:31
Go to the top of the page
+Quote Post
MateuszS
post
Post #4





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


@skowron-line, tak sorki, tam ma być "panel" zamiast "index" bo wywala błąd dla admin/panel.
Dopisałem tak jak zalecił @klocu "<directory>/ ale nadal mam 404. Kontroler jest utworzony w folderze admin (panel.php).

Moja wersja kohana 3.2

Ten post edytował MateuszS 18.02.2013, 21:31:23
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Użyj metody matches z klasy Route do testowania routingu.

Zobacz sobie coś takiego.
  1. Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))')
  2. ->defaults(
  3. 'directory' => 'admin',
  4. 'controller' => 'panel',
  5. 'action' => 'index'
  6. )
  7. );


Edit

Wrzuciłem sobie u siebie
  1. Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))')
  2. ->defaults(
  3. 'directory' => 'admin',
  4. 'controller' => 'panel',
  5. 'action' => 'index'
  6. )
  7. );
  8.  
  9. $route = Route::get('admin');
  10. echo Kohana_Debug::dump($route->matches('admin/panel'));

i dostaje
Kod
array(3) ( "controller" => string(5) "panel" "directory" => string(5) "admin" "action" => string(5) "index" )

więc działa (ko 3.2)

Edit 2
A tu działający twój route z 1 posta
  1. Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))',
  2. 'id' => '\d+',
  3. 'controller' => '(panel|news|gallery|films)',
  4. 'action' => '(add|edit|delete)'
  5. ))
  6. ->defaults(array(
  7. 'directory' => 'admin',
  8. 'controller' => 'panel',
  9. 'action' => 'index'
  10. ));
  11.  
  12. $route = Route::get('admin');
  13. echo Kohana_Debug::dump($route->matches('admin/panel/edit/10'));


Ten post edytował skowron-line 18.02.2013, 21:40:03
Go to the top of the page
+Quote Post
MateuszS
post
Post #6





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


Hmm usunąłem linijkę z directory i działa, why?

Ten post edytował MateuszS 19.02.2013, 01:42:04
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(MateuszS @ 19.02.2013, 00:15:51 ) *
Hmm usunąłem linijkę z directory i działa, why?

A napewno strukture katalogów masz prawidłową ?
Kod
- controler
-- admin

Go to the top of the page
+Quote Post
MateuszS
post
Post #8





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


No właśnie mam dobry. Tylko teraz nie wiem czy mój kontroler admin/index.php obsługuje akurat ten adres admin/index bo jak chcę wpisać jakiś content to nic się nie pojawia ;/ Ogólnie coś się posypało bo odpalając admin/panel/ załącza mi sę formularz logowania który jest pod /login/

  1. Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))',
  2. 'id' => '\d+',
  3. 'controller' => '(panel|news|gallery|films)',
  4. 'action' => '(index|add|edit|delete)'
  5. ))
  6. ->defaults(array(
  7. 'controller' => 'panel',
  8. 'action' => 'index'
  9. ));
  10.  
  11.  
  12. Route::set('auth', '<action>',
  13. 'action' => '(login|logout)'
  14. ))
  15. ->defaults(array(
  16. 'controller' => 'auth'
  17. ));
  18.  
  19.  
  20.  
  21. Route::set('news', 'news(/<newsid>)', array('newsid' => '\d+'))
  22. ->defaults(array(
  23. 'controller' => 'news',
  24. 'action' => 'index'
  25. ));
  26.  
  27.  
  28. Route::set('default', '(<controller>(/<action>(/<id>)))')
  29. ->defaults(array(
  30. 'controller' => 'index',
  31. 'action' => 'index',
  32. ));


natomiast jakby przestało działać

  1. $this->template->content = "blalblala";


Ten post edytował MateuszS 19.02.2013, 13:08:57
Go to the top of the page
+Quote Post
skowron-line
post
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Pokaż kontroller index
Go to the top of the page
+Quote Post
MateuszS
post
Post #10





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


Przemianowałem go na panel.php żeby nie było konfliktu z index.php po którym dziedziczy widok.

Żeby nie było bałaganu teraz podsumuję jak to wygląda:

bootstrap.php tak jak w poprzednim poście

struktura katalogów:
Kod
controller
  -index.php
  -auth.php
  -news.php
  -admin/
    --panel.php
    --news.php


w panel.php jak i news.php mam tymczasowo
  1. //panel.php
  2. <?php defined('SYSPATH') or die('No direct script access.');
  3.  
  4. /**
  5.  * Klasa odpowiadająca za ogólny widok panelu administratora
  6.  */
  7.  
  8. class Controller_Panel extends Controller_Index
  9. {
  10. public function action_index()
  11. {
  12. $this->template->content = "asdasdada"; //zeby spr. czy w ogole cos sie wyswietli, $content to zmienna
  13. //w pliku widoku ktora zmienia cialo jednego diva w ktorym beda np. newsy itd. Jesli kontroler dziala powinno
  14. //wczytac mi strone ale z pustym "ciałem" a po zdefiniowaniu content jak powyżej powinien pojawić się napis
  15. }
  16. }
  17.  
  18.  
  19. //news.php
  20. //analogicznie


I jak teraz wszystko oporządkowałem to wróciłem do punktu wyjścia, 404 na wszystkich podstronach. W poprzednim poście napisałem że mi się załącza form logowania na podstronie admina - to już nie aktualne. W tej chwili na każej podstronie które powinny wyświetlić to "asdasdada" wywala 404.

Kod
strona.pl/admin
strona.pl/admin/panel/
strona.pl/admin/panel/index
strona.pl/admin/news
strona.pl/admin/news/index


Ten post edytował MateuszS 19.02.2013, 13:23:18
Go to the top of the page
+Quote Post
skowron-line
post
Post #11





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Nie
  1. class Controller_Panel extends Controller_Index

Tylko
  1. class Controller_Admin_Panel extends Controller_Index


Controller - folder kontroller
Admin - podfolder admin
Panel - nazwa kontrolera

admin/panel (folder/kontroler)
Go to the top of the page
+Quote Post
MateuszS
post
Post #12





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


Jaki wstyd... podstawy podstaw, zupełnie o tym zapomniałem. Dzięki @skowron-line.
Go to the top of the page
+Quote Post
skowron-line
post
Post #13





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(MateuszS @ 19.02.2013, 13:42:16 ) *
Jaki wstyd... podstawy podstaw, zupełnie o tym zapomniałem. Dzięki @skowron-line.

Żeby mi to było ostatni raz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 22:02