Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2]+KnpMenuBundle, Unable to generate a URL for the named route
karas77
post 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
Go to the top of the page
+Quote Post
Forti
post 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? wink.gif


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
karas77
post 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
Go to the top of the page
+Quote Post
prz3kus
post 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?
Go to the top of the page
+Quote Post
Forti
post 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:

  1. public function createMainMenu(RequestStack $requestStack)
  2. {
  3. $menu = $this->factory->createItem('root');
  4.  
  5. $menu->addChild('Home', array('route' => 'test')); // konkretnie ta linijka
  6. // ... add more children
  7.  
  8. return $menu;
  9. }


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? wink.gif

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
Go to the top of the page
+Quote Post
karas77
post 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:
#(tu jest przekierowanie)
    resource: "@FirmaStartBundle/Controller/InfoController.php"
    type:     annotation
    prefix:     /info
kombinowałem z prefixem i bez, na annotacji i konfiguracji .yml i nic wacko.gif
znając życie rozwiazanie jest proste ale jakoś noc mi nie przychodzi
Przekierowuje do InfoController.php
  1. class InfoController extends Controller
  2. {
  3. /**
  4.   * @Route("/", defaults={"url"="info"}),
  5. //route które powinno przekierowywać każdy adres z /info chyba?
  6. * @Route("/{url}", name="firma_info") //adres powinien być taki app_dev.php/info/test
  7.   * @Template()
  8.   */
  9. public function indexAction($url)
  10. {
  11. //...
  12.  
  13. return array("url" => $url);
  14. }
  15. }

{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 sciana.gif

Problem rozwiązałem błąd znajdował się w pliku controllera,
Kod
    /**
     * @Route("/cośtam", name="test")
     * @Template()
     */
zamiast "name=test" miałem "name=firma_info" (nazwa przekierowania w pliku routin.yml) zamiast bezpośredniego odniesienia do nazwy w pliku MenuBuilder.php. facepalmxd.gif 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.

Ten post edytował karas77 18.05.2015, 12:34:05
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 10:59