![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 26.10.2012 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Zwracam sie do Was z prośbą o nakierowanie gdzie umieszczac helpery których chce uzywać w calym projekcie. Tworze własny system CMS. Kazdą funkcjonalność jest osobnym Bundlem, np. News, Gallery, Article itp. W helperach chce umieszczac funkcje np. do tworzenia cleanURL. Myslalem utworzyć HelperBundle gdzie utworzyłbym katalog Helper i tworzył różne klasy np. HTML i umieszczał helpery to trimowania, usuwania znaków html itp. TEXT - do pracy na stringach , URL do pracy na adresach URL itd. Potem utworzyć serwisy i uzywać dowolnym miejscu/ Czy ten sposób jest ok? jak to lepiej rozwiązac? jak Wy to robicie? Drugie pytanie: Jak uzyskać dostep do servisu w __construktor() Dostaje bład: Call to a member function get() on a non-object in /var/www/apps/lovecoding_cms/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php Jeśli chce uzyc serwisu w ponizszy sposob Kod public function __construct() { $breadcrumbs = $this->get("white_october_breadcrumbs"); } Próbowałem również: Kod use Symfony\Component\DependencyInjection\ContainerInterface; public function __construct(ContainerInterface $container) { $this->_container = $container; $breadcrumbs = $this->_container->get("white_october_breadcrumbs"); } Teraz otrzymuje: Catchable Fatal Error: Argument 1 passed to Lovecoding\AdminBundle\Controller\MainController::__construct() must implement interface Symfony\Component\DependencyInjection\ContainerInterface, none given, called in /var/www/apps/lovecoding_cms/app/cache/dev/classes.php on line 2393 and defined in /var/www/apps/lovecoding_cms/src/Lovecoding/AdminBundle/Controller/MainController.php line 17 Moj controller dziedziczy po Controller Kod class MainController extends Controller { Czekam na odpowiedzi. Pozdrawiam. Ten post edytował soszin 3.09.2014, 23:05:53 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 2 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Odnośnie pierwszego pytania, ja zawsze tworzę sobie bundla o nazwie w rodzaju MainBundle, w którym trzymam rzeczy, które mogą być potrzebne w całym projekcie - nie tylko helpery. Co do drugiego pytania. Czemu nie możesz pobierać odpowiednich serwisów w momencie kiedy są już potrzebne? Jeśli koniecznie chcesz je wstrzykiwać to tutaj masz rozwiązanie: http://symfony.com/doc/current/cookbook/co...er/service.html, możesz też użyć bundla JmsDiExtra: http://jmsyst.com/bundles/JMSDiExtraBundle...age#controllers |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 26.10.2012 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Za pierwszą odpowiedz dzięki,
w głownym kontrolerze chce utworzyc pierwszy element breadcrumba na Home, i aby wszystkie kontrolery które po nim dziedziczą mialy go domyślnie. Nie chce w kazdym kontrolerze usawiać elementu Home, |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Kontener jest wstrzykiwany poprzez metodę setContainer nie konstruktor kontrolera.
2. Przecież dodanie "Home'a" możesz zrobić w momencie tworzenia samej usługi odpowiedzialnej za breadcrumbs'y. --- "Helpery" to bardzo, bardzo ogólna nazwa. Część zrealizujesz sobie zapewne przez zwykłe klasy, a część przez usługi (w kontekście DIC-a). Część z nich może być na tyle mocno związana z projektem, że nie będzie sensu wrzucać ich nigdzie indziej jak do jakiegoś bundle'a, część będzie kompletnie niezależna i można pomyśleć o wydzieleniu ich do zupełnie osobnego projektu. Co, gdzie, jak, kiedy? To już zależy od tego co to konkretnie jest. Ten post edytował Crozin 4.09.2014, 12:40:30 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Do konstruktora (lub przez setter) w serwisie możesz wstrzykiwać bez problemu także inne serwisy przez services.yml czy .xml, zależy czego uzywasz.
Tu masz praktycznie wszystko wyjaśnione: http://symfony.com/doc/current/book/servic...ecting-services no i ogólnie polecam całość strony do przejrzenia. Ten post edytował ohm 4.09.2014, 20:33:18 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:23 |