• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony 4 - Tworzenie i używanie szablonów i dodawanie css/js

Object Storage Arubacloud
0 głosów
2,742 wizyt
pytanie zadane 1 stycznia 2018 w PHP przez Kerdi26 Użytkownik (640 p.)
Cześć, ostatnio zacząłem się uczyć symfony 4 albo przynajmniej staram się to robić. I mam problem bo z samej oficjalnej dokumentacji nie wiele rozumiem i doszedłem do poziomu, że wiem jak w ruterze pisać odpowiednie ścieżki do kontrolerów, tam zwracać odpowiedzi poprzez obiekt response i tu się zatrzymałem bo nie wiem jak mam importować do takiego kontrolera szablony, które mam przykładowo w katalogu templates w głównym folderze aplikacji. I jak potem przez obiekt response, lub w inny sposób zwracać jako odpowiedź te szablony, oraz jak w samych szablonach przez funkcję asset odwoływać się do własnych cssów i jsów. I jeśli ktoś by mógł to prosiłbym o dokładne wytłumaczenie tych rzeczy krok po kroku, z góry dzięki

1 odpowiedź

+2 głosów
odpowiedź 1 stycznia 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)

bo nie wiem jak mam importować do takiego kontrolera szablony, które mam przykładowo w katalogu templates w głównym folderze aplikacji. I jak potem przez obiekt response, lub w inny sposób zwracać jako odpowiedź te szablony,

Coś słabo dokumentację w takim razie studiujesz, bo to jest pokazane już na samym początku :) 

http://symfony.com/doc/current/page_creation.html#rendering-a-template - tu jest wszystko pokazane, wystarczy zwrócić wynik metody $this->render(). Do render() podajesz nazwę tego szablonu (bez ścieżki bo ta zdefiniowana jest w configach), dalej ewentualne parametry przekazywane do widoku.

Oczywiście zakładam, że masz już zainstalowanego bundle z Twigiem i dziedziczysz po bazowym kontrolerze, wtedy będziesz miał w każdym metodę render().

jak w samych szablonach przez funkcję asset odwoływać się do własnych cssów i jsów

Umieszczasz taki własny asset w katalogu public i względem niego podajesz ścieżkę do pliku. Czyli gdy umieścisz np. plik CSS bezpośrednio w katalogu public wystarczy że dasz asset('plik.css'), jeśli zrobisz podkatalog np. css/ to będzie to asset('css/plik.css'). O resztę dba Symfony.

komentarz 29 kwietnia 2018 przez Kerdi26 Użytkownik (640 p.)

Okej niespecjalnie wiem co zrobiłem, bo robiłem dużo i w pewnym momencie zorientowałem się, że, gdy korzystałem z TestCase to zaczęło działać, ładowanie klas też, dalej jednak pozostaje kwestia z KernelTestCase i WebTestCase bo wyskakuje problem:

LogicException : You must set the KERNEL_CLASS environment variable to the fully-qualified class name of your Kernel in phpunit.xml / phpunit.xml.dist or override the App\Tests\Repository\VictoriousRepositoryTest::createKernel() or App\Tests\Repository\VictoriousRepositoryTest::getKernelClass() method.

Który udało mi się obejść, gdy w metodzie getKernelClass w pliku KernelTestCase robię coś takiego:

 protected static function getKernelClass()
    {
        /*
        if (!isset($_SERVER['KERNEL_CLASS']) && !isset($_ENV['KERNEL_CLASS'])) {
            throw new \LogicException(sprintf('You must set the KERNEL_CLASS environment variable to the fully-qualified class name of your Kernel in phpunit.xml / phpunit.xml.dist or override the %1$s::createKernel() or %1$s::getKernelClass() method.', static::class));
        }

        if (!class_exists($class = $_ENV['KERNEL_CLASS'] ?? $_SERVER['KERNEL_CLASS'])) {
            throw new \RuntimeException(sprintf('Class "%s" doesn\'t exist or cannot be autoloaded. Check that the KERNEL_CLASS value in phpunit.xml matches the fully-qualified class name of your Kernel or override the %s::createKernel() method.', $class, static::class));
        }
        */

        return \App\Kernel::class;
    }

Ale to nie rozwiązuje problemu na dłuższą metę, tutaj masz linka do gita z projektem, który zrobiłem, po to żeby szukać rozwiązania https://github.com/robert611/Project_2

komentarz 29 kwietnia 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
Yhm... nie wiem o co chodzi, ale u mnie to działa.

Zrobiłem po kolei:

- git clone git@github.com:robert611/Project_2.git
- composer install
- ./vendor/bin/phpunit

Efekt:

PHPUnit 7.1.5 by Sebastian Bergmann and contributors.

Testing Project Test Suite
..                                                                  2 / 2 (100%)

Time: 437 ms, Memory: 28.00MB

OK (2 tests, 2 assertions)

Chyba że czegoś nie rozumiem i to "obejście" jest jeszcze gdzieś w obecnych plikach i muszę to usunąć?
komentarz 29 kwietnia 2018 przez Kerdi26 Użytkownik (640 p.)
A tak, masz wersję z zakomentowanym sprawdzeniem wyjątków i przypisanym return \App\Kernel::class w Pliku KernelTestCase, tak jak widać w poprzednim poście.
komentarz 29 kwietnia 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
A ten plik nie jest czasem w vendorze? Bo vendora pobierałem przecież normalnie (composer install), nie ma w nim żadnej Twojej modyfikacji i komentarzy ;)
komentarz 10 maja 2018 przez Kerdi26 Użytkownik (640 p.)

Z tym vendorem fakt, nie wiem więc co jest nie tak u siebie zostawiłem to ze zmianą i niech już działa tak jak jest.  A jeśli chodzi o kodowanie znaków w aplikacji symfony trzeba coś zmieniać po za tym fragmentem w doctrine.yaml

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8
        default_table_options:
            charset: utf8
            collate: utf8_polish_ci

 

Podobne pytania

0 głosów
1 odpowiedź 230 wizyt
pytanie zadane 11 lutego 2022 w PHP przez Moonmaker05 Początkujący (410 p.)
0 głosów
0 odpowiedzi 191 wizyt
0 głosów
0 odpowiedzi 153 wizyt

92,556 zapytań

141,404 odpowiedzi

319,563 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...