[Symfony2]+KnpMenuBundle, Unable to generate a URL for the named route |
[Symfony2]+KnpMenuBundle, Unable to generate a URL for the named route |
17.05.2015, 15:01:34
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.04.2015 Ostrzeżenie: (0%) |
Witam
jako że nie mogę napisać nowego tematu( w frameworki?) napiszę tutaj. Po instalacji i konfiguracji według str. KnpMenuBundle mam następujący błąd: Kod An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "sprawdz" as such route does not exist.") in src/Firma/SerwisBundle/Resources/views/layout.html.twig at line 12. konfiguracja: Ubuntu14.04, apache2, php5, mysql /app/AppKernel.php Kod new Knp\Bundle\MenuBundle\KnpMenuBundle(), new AppBundle\AppBundle(), new Firma\SerwisBundle\FirmaStartBundle() /app/config/config.yml Kod # KnpMenuBundle Configuration knp_menu: twig: template: knp_menu.html.twig templating: false default_renderer: twig /app/config/routing.yml Kod firma: resource: "@FirmaStartBundle/Resources/config/routing.yml" prefix: / /app/config/services.yml Kod app.menu_builder: class: AppBundle\Menu\MenuBuilder arguments: ["@knp_menu.factory"] app.main_menu: class: Knp\Menu\MenuItem factory_service: app.menu_builder factory_method: createMainMenu arguments: ["@request_stack"] tags: - { name: knp_menu.menu, alias: main } /src/Firma/StartBundle/Resources/config/routing.yml Kod firma_start: path: / defaults: { _controller: FirmaStartBundle:Welcome:index } firma_info: resource: "@FirmaStartBundle/Controller/InfoController.php" type: annotation prefix: /info /src/Firma/StartBundle/Controller/InfoController.php Kod <?php namespace Firma\StartBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; class InfoController extends Controller { /** * @Route("/", defaults={"url"="info"}), * @Route("/{url}", name="firma_info") * @Template() */ public function indexAction($url) { //... return array("url" => $url); } } /src/AppBundle/Menu/MenuBuilder.php Kod <?php namespace AppBundle\Menu; use Knp\Menu\FactoryInterface; use Symfony\Component\HttpFoundation\RequestStack; class MenuBuilder { private $factory; /** * @param FactoryInterface $factory */ public function __construct(FactoryInterface $factory) { $this->factory = $factory; } public function createMainMenu(RequestStack $requestStack) { $menu = $this->factory->createItem('root'); $menu->addChild('Home', array('route' => 'test')); // ... add more children return $menu; } } Kod <td>{{ knp_menu_render('main') }}</td> jakieś pomysły? Męczę się z tym już 3 dzień, gdy odnośnik menu wskazuje na 'route' => 'homepage' wszystko działa, a gdy ma wartość inną już nie, coś z routingiem tylko nie wiem co, polecenie router:debug pokazuje firma_start ANY ANY ANY / firma_start_info_index ANY ANY ANY /info/ firma_info ANY ANY ANY /info/{url} Kombinuje na różne sposoby i nic (pewnie coś przeoczyłem:)). Ten post edytował karas77 17.05.2015, 15:03:39 |
|
|
17.05.2015, 15:48:26
Post
#2
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) |
Pokaż zawartość pliku src/Firma/SerwisBundle/Resources/views/layout.html.twig.
Próbujesz tam renderować route o nazwie sprawdz. Robisz to bezpośrednio w linijce 12. Taki route nie istnieje. Z czym jeszcze masz problem? -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
17.05.2015, 17:38:15
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.04.2015 Ostrzeżenie: (0%) |
Sorki mój błąd podałem wpis z poprzedniej konfiguracji zresztą też mi nie działała zamiast "sprawsz" jest "test" co i tak nie robi różnicy bo to tylko zmiana nazwy linku w menu
Kod An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "test" as such route does not exist.") in FirmaStartBundle::layout.html.twig at line 12. plik src/Firma/StartBundle/Resources/views/layout.html.twig Kod {% extends "::base.html.twig" %} {% block meta %} <meta name="keywords" content="" /> <meta name="description" content="" /> {% endblock %} {% block body %} <div class="header_box"> {% block header_box %} <div id="navi_header"><table><tr><td>{{ knp_menu_render('main') }}</td></tr></table></div> {% endblock %} </div> <div class="index_box">{% block index_box %}{% endblock %}</div> <div class="footer_box"> {% block footer_box %}{% endblock %} </div> {% endblock %} link ma wyglądać np. tak: app_dev.php/info/...jakaś strona(np. test), sama strona app_dev.php/info/test działa tylko nie mogę zrobić przekierowania przez odnośnik w menu? Ten post edytował karas77 17.05.2015, 17:38:42 |
|
|
18.05.2015, 08:03:29
Post
#4
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) |
Pokaż gdzie masz w kontrolerze zadklarowany routing test?
|
|
|
18.05.2015, 08:18:36
Post
#5
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) |
Masz u siebie coś takiego:
widzisz?! W pliku /src/Firma/StartBundle/Resources/config/routing.yml nie widzę abyś miał zadeklarowany taki routing. Dostajesz błąd "ROUTE NIE ISTNIEJE" i nadal nie wiesz gdzie masz błąd? Ten post edytował Forti 18.05.2015, 08:19:00 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
18.05.2015, 12:17:32
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.04.2015 Ostrzeżenie: (0%) |
Wiem która linijka kodu powoduje błąd tylko nie wiem dlaczego,
Przeszukuje Route w celu dopasowania linka Kod firma_info: kombinowałem z prefixem i bez, na annotacji i konfiguracji .yml i nic #(tu jest przekierowanie) resource: "@FirmaStartBundle/Controller/InfoController.php" type: annotation prefix: /info znając życie rozwiazanie jest proste ale jakoś noc mi nie przychodzi Przekierowuje do InfoController.php
{url} powinien przyjmować każdą możliwą wartość kiedyś jak budowałem menu z tym bundlem wszystko działało bez problemu a teraz to pewnie coś sknociłem Problem rozwiązałem błąd znajdował się w pliku controllera, Kod /** zamiast "name=test" miałem "name=firma_info" (nazwa przekierowania w pliku routin.yml) zamiast bezpośredniego odniesienia do nazwy w pliku MenuBuilder.php. Taki duperel a tyle nerwu przepraszam za kłopot, jednak czy to aby na pewno jest odpowiednie rozwiązanie?, chodziło mi o to żeby przekierowania były realizowane za pomocą jednej funkcji i wieloznacznika {url}, a nie dla każdej pozycji oddzielnie.
* @Route("/cośtam", name="test") * @Template() */ Ten post edytował karas77 18.05.2015, 12:34:05 |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 12:47 |