Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony] Routing w Symfony 2
strike
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 6.05.2012

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


Mam problem z ustawieniem routing-u w Symfony 2, dzięki ustawieniu adnotation działa mi "index" pakietu po adresie:
projekt/web/app.php/pakiet.html
ale nie chce działać bez "/app.php" , ustawiłem w routing.yml:

_homepage:
pattern: /
defaults: { _controller: PakietBundle:Default:index }

(wiem o spacjach)

wyczyściłem cache i nic to nie dało (IMG:style_emoticons/default/sad.gif) nie działa:

projekt/web/app.php/ --> Error 404
projekt/web/ --> Error 403

Może mi ktos podpowiedzieć co robie źle?

Ten post edytował strike 3.10.2012, 18:18:57
Go to the top of the page
+Quote Post
bambam
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 4.09.2011

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


zle masz nazwanego bundle, nazwa jest 2 czesiowa np AcmeDemoBundle i analogicznie struktura katalogow src: Acme/DemoBundle

Ty masz tylko PakietBundle wiec cos ci brakuje

Go to the top of the page
+Quote Post
strike
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 6.05.2012

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


Nazwa jest prawidłowa więc problem jest gdzie indziej


Edit:
Wydaje mi się że problem jest w ustawieniach mojego lokalnego serwera, w pliku htaccess jest warunek

<IfModule mod_rewrite.c>

Czyżbym miał niewłączony mod_rewrite? W httpd.conf jest odkomentowane:

LoadModule rewrite_module modules/mod_rewrite.so

czyżby była do tego potrzebna instalacja dodatkowej paczki ?


Ten post edytował strike 3.10.2012, 19:12:37
Go to the top of the page
+Quote Post
Szymciosek
post
Post #4





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


A korzystasz czasami z app_dev.php ? Tam Ci ładnie pokaże, jeśli ma problem.
Go to the top of the page
+Quote Post
strike
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 6.05.2012

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


Problem rozwiązany a raczej znam jego przyczynę: Gdy nie działa mod_rewrite to tak się dzieje.
Go to the top of the page
+Quote Post
webmaniak
post
Post #6





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


Witam,
czytam sobie informacje o routingu dostępne tutaj:
http://symfony-docs.pl/book/routing.html
Wcześniej miałem doczynienia z CI. Tam tworzyłem sobie akcje w kontrolerze, następnie odpowiedni widok i działało. Tutaj natomiast wygląda na to - tak mi się wydaję, że każdy adres któy będzie wpisany musi być zapisany w routingu. Pytanie czy da się to jakoś obejść? Czy to musi tak wyglądać? Czy w Yii też to tak wygląda? Wiem, że dla "wyjadaczy" symfony to jest kretyńskie pytanie, ale ja się uczę tego fw, więc pytam (IMG:style_emoticons/default/smile.gif)
Pozdrawiam i dziękuję za wytłumaczenie.
Go to the top of the page
+Quote Post
sajegib
post
Post #7





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


Nie, nie każdy (konkretny) adres musi być wpisany w routingu. Możesz np użyć przekazywania przez trasę zmiennej /home/{zmienna} i na jej podstawie coś tam sobie wyświetlać
Go to the top of the page
+Quote Post
webmaniak
post
Post #8





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


Hmm, no tak, ale tak czy siak część adresów będzie wymagała podania konkretnego opisu w routingu? Czy w zend2 i yii też to tak wygląda? Czy to jest specyficzna rzecz tylko dla symfony2?
Edit:
mam pierwszy problem z routingiem:
routing.yml:
  1. Admin_kategoria_lista:
  2. pattern: /admin/categories
  3. defaults: {_controller: AuctionsAccountBundle:Admin:categories }

AdminControllers.php:
  1. public function categoriesAction(Request $request) {
  2. return $this->render('AuctionsAccountBundle:Categories:index.html.php', array('form' => $form->createView()));
  3. }

Plik index.html.php:
  1. <?php $view->extend('AuctionsAccountBundle:Admin:index.html.php') ?>
  2. <?php $view['slots']->start('adminbody') ?>
  3. <h1>Lista kategorii</h1>
  4. <?php $view['slots']->stop() ?>

No i komunikat: Nie odnaleziono serwera lub pliku. O co chodzi? Adres http://aukcje.local/app_dev.php/account/admin/categories prowadzi do kontrolera admin, akcji categories a ta do pliku index.html.php?



Ten post edytował webmaniak 15.05.2013, 21:20:17
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Symfony zrezygnowało* z udostępnienia routingu, gdzie bezpośrednio w URLu podany jest kontroler czy akacja. I w sumie bardzo dobrze, bo tak naprawdę nie ma specjalnie dużo roboty z tym, a:
1. Uniezależniasz swój kod od URL-i. Jeżeli w przyszłości zmienisz coś w kodzie nie będziesz musiał zmieniać URL-i czy tworzyć jakiś dziwnych przekierowań.
2. Zawsze możesz korzystać z nazwy ścieżki (np. homepage) zamiast trudzić się z każdorazowym podawaniem pary kontroler:akcja.
3. Możesz łatwo nadpisać ścieżkę.
4. Znacząco ułatwia to utrzymanie kodu.

* oczywiście możesz sobie bezinwazyjnie nadpisać mechanizm routingu (właściwie to wystarczyłoby nadpisać jego maluteńki fragment), ale szczerze nie zalecałbym tego.
Go to the top of the page
+Quote Post
webmaniak
post
Post #10





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


A miałem wypróbować Yii :-) skoro ktoś to tak wymyślił to zapewne jest to dobre rozwiązanie a i Twoje argumenty są przekonywujące :-) Mógłby ktoś zerknąć jeszcze na kod który zamieściłem, nie potrafię znaleźć tam błędu-może zmęczenie, nie wiem.

Ten post edytował webmaniak 15.05.2013, 22:07:29
Go to the top of the page
+Quote Post
sajegib
post
Post #11





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


  1. AdminControllers.php:

na
  1. AdminController.php:


Cytat
Adres http://aukcje.local/app_dev.php/account/admin/categories prowadzi do kontrolera admin, akcji categories a ta do pliku index.html.php?


Jak masz taki adres to zmień pattern w routingu:

  1. Admin_kategoria_lista:
  2. pattern: /account/admin/categories
  3. defaults: {_controller: AuctionsAccountBundle:Admin:categories }


brakowało account
Go to the top of the page
+Quote Post
webmaniak
post
Post #12





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


hmmmm.... Skoro brakuje account, to czemu w tym:
  1. Account_home:
  2. pattern: /
  3. defaults: { _controller: AuctionsAccountBundle:Default:index }
  4.  
  5. Admin_home:
  6. pattern: /admin
  7. defaults: { _controller: AuctionsAccountBundle:Admin:index }
  8.  
  9. Admin_kategoria_lista:
  10. pattern: /admin/categories
  11. defaults: {_controller: AuctionsAccountBundle:Admin:categories }

działa mi poprawnie adres: http://aukcje.local/app_dev.php/account/admin (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Crozin
post
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Zapewne w głównym pliku routingu (app/config/routing), gdzie dołączasz plik routingu z bundla masz ustawiony prefix:
Kod
my_bundle_routing:
    resource: "@MyBundle...."
    prefix: /accout
Go to the top of the page
+Quote Post
webmaniak
post
Post #14





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


@sajegib AdminController.php - taką nazwę mam - po prostu źle napisałem tutaj.
Cytat(Crozin @ 16.05.2013, 09:06:10 ) *
Zapewne w głównym pliku routingu (app/config/routing), gdzie dołączasz plik routingu z bundla masz ustawiony prefix:
Kod
my_bundle_routing:
    resource: "@MyBundle...."
    prefix: /accout

Zgadza się (IMG:style_emoticons/default/smile.gif) To teraz wrócę do pierwszego pytania: czemu zatem nie działa mi adres z kategoriami?


Ten post edytował webmaniak 16.05.2013, 08:16:39
Go to the top of the page
+Quote Post
destroyerr
post
Post #15





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


@webmaniak ciężko tak trochę w ciemno Ci pomóc. To może być np. jakaś drobna literówka, której nie mamy szans zauważyć. Przejrzyj logi: albo w katalogu apps/logs albo za pomocą Web Debug Toolbar. Jak to Ci nic nie powie. To wrzuć log z tej jednej wadliwej akcji.
Go to the top of the page
+Quote Post
webmaniak
post
Post #16





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


hmmm... tam była literówka, między { a _controller. Teraz mam ten sam komunikat. Log:
Kod
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] []
[2013-05-16 18:18:20] request.INFO: Matched route "Admin_kategoria_lista" (parameters: "_controller": "Auctions\AccountBundle\Controller\AdminController::categoriesAction", "_route": "Admin_kategoria_lista") [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\Fragment\FragmentHandler::onKernelRequest". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DeprecationLoggerListener::injectLogger". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.controller" to listener "Acme\DemoBundle\EventListener\ControllerListener::onKernelController". [] []
[2013-05-16 18:18:20] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] []

Tyle że jak wpiszę w akcji:
  1. public function categoriesAction(Request $request) {
  2. echo 'tu jestem';exit;
  3. return $this->render('AuctionsAccountBundle:Categories:index.html.php', array('form' => $form->createView()));
  4. }

To mam tekst z echo. Czyli problem jest z odczytem pliku?
Go to the top of the page
+Quote Post
destroyerr
post
Post #17





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Log nie zawiera żadnego błędu, być może jest niepełny.

Cytat
To mam tekst z echo. Czyli problem jest z odczytem pliku?

No to wynika z tego, że problem jest z widokiem/szablonem a nie routingiem czy też kontrolerem. W logu powinna być informacja czy nie może znaleźć tego błędu czy też jest to np. błąd składni.
Go to the top of the page
+Quote Post
webmaniak
post
Post #18





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


No właśnie dałem pełny log po wpisaniu w przeglądarce adresu. Nie ma nic więcej. A widok mam w AccountBundle/Resources/views/Categories i tam index.html.php. I teraz hmmm... działa jak dałem tak:
  1. public function categoriesAction(Request $request) {
  2. return $this->render('AuctionsAccountBundle:Categories:index.html.php');
  3. }

Może mi ktoś wytłumaczyć z czego to wynika? jak już przekazuję zmienną to muszę ją wykorzystać w widoku?
Go to the top of the page
+Quote Post
destroyerr
post
Post #19





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Jeśli kod który wrzuciłeś (odnośnie akcji) no to błąd jest oczywisty - brak inicjalizacji zmiennej form. Błędu żadnego nie dostajesz bo chyba masz zbyt niskie raportowanie błędów ustawione.

Ten post edytował destroyerr 16.05.2013, 20:04:48
Go to the top of the page
+Quote Post
webmaniak
post
Post #20





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


Ok, spawdzę poziom raportowania, jak dla mnie development powinien mieć pełny. To już umiem zmienić. Dzięki za pomoc.
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.12.2025 - 20:22