1. Instalacja Symfony 4
Instalacja frameworka Symfony 4 jest stosunkowo prosta. Jeśli masz zainstalowanego klienta SSH (np: putty.org) to zaloguj się do swojego serwera a następnie uruchom z wiersza poleceń komendę:
1 |
$ composer create-project symfony/website-skeleton myweb |
gdzie myweb to nazwa katalogu, w którym zostanie zainstalowany framework.
Jeśli nie masz zainstalowanego narzędzia composer (getcomposer.org/download) lub nie masz odpowiednich uprawnień, aby to zrobić, możesz pobrać plik composer.phar i wrzucić go na serwer do katalogu strony, a następnie wywołać polecenie:
1 |
$ php composer.phar create-project symfony/website-skeleton myweb |
Po zainstalowaniu S4 odpal w przeglądarce stronę: https://example.com/myweb/public/index.php/
I gotowe! Pierwsze koty za płoty 😉
2. Konfiguracja bazy danych
Na początek stwórz pustą bazę danych. Przyda nam się do dalszych działań 🙂 Możesz to zrobić za pomocą aplikacji PHPMyadmin itp. Następnie musimy skonfigurować nasze połączenie z bazą.
Otwórz plik: .env znajdujący się w katalogu głównym frameworka (https://example.com/.env).
Wyedytuj linię DATABASE_URL i zapisz dane do połączenia z bazą danych (username, password, dbname):
1 |
DATABASE_URL=mysql://username:password@127.0.0.1:3306/dbname |
3. Instalacja EasyAdminBundle
EasyAdmin to nic innego jak prosty system do zarządzania treścią na stronie (CMS). To pojęcie jest ci zapewne znane ;).
A więc teraz wisienka na naszym torcie z kodu i możemy być kontent 😉 Upewnij się, że jesteś w katalogu strony:
1 |
$ cd /myweb |
i wykonaj polecenie:
1 |
$ php composer.phar require admin |
Po poprawnym zainstalowaniu EasyAdminBundle możemy już przejść do sedna zadania. Stworzymy prosty „backend” do edycji strony opisowej (z polami: id, title, content, enabled, createdAt).
Skopiuj poniższy kod klasy i zapisz go w pliku np: Page.php w katalogu /src/Entity/.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
<?php // src/Entity/Page.php namespace App\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; /** * @ORM\Entity * @ORM\Table(name="page") */ class Page { /** * @var int * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @var string * @ORM\Column(type="string") * @Assert\NotBlank */ private $title; /** * @var string * @ORM\Column(type="text") * @Assert\NotBlank(message="page.blank_content") * @Assert\Length(min=10, minMessage="page.too_short_content") */ private $content; /** * @var bool * @ORM\Column(type="boolean") */ private $enabled; /** * @var \DateTime * @ORM\Column(type="datetime") * @Assert\Type(type="\DateTime") */ private $createdAt; public function __construct() { $this->createdAt = new \DateTime(); } public function getId(): ?int { return $this->id; } public function setId(?int $id): void { $this->id = $id; } public function getTitle(): ?string { return $this->title; } public function setTitle(?string $title): void { $this->title = $title; } public function getContent(): ?string { return $this->content; } public function setContent(?string $content): void { $this->content = $content; } public function getEnabled(): ?bool { return $this->enabled; } public function setEnabled(?bool $enabled): void { $this->enabled = $enabled; } public function getCreatedAt(): \DateTime { return $this->createdAt; } public function setCreatedAt(?\DateTime $createdAt): void { $this->createdAt = $createdAt; } } |
Mając przygotowaną klasę Page z polami formularza, możemy teraz wygenerować tabelę o nazwie „page” – zgodnie z zapisem: @ORM\Table(name=”page”). Naturalnie nazwę tabeli możesz zmienić, jak również przygotować własne pola itd.
Tak więc uruchom polecenie:
1 |
$ bin/console doctrine:schema:update --force |
Ostatni już krok. Wejdź do pliku konfiguracyjnego easy_admin.yaml (/config/packages/easy_admin.yaml) i zdefiniuj w nim klasę Page według wzoru:
1 2 3 |
easy_admin: entities: - App\Entity\Page |
Uważaj! Pliki z rozszerzeniem .yaml nie mogą zawierać znaków tabulacji itp. Poszczególne odstępy / wcięcia muszą być robione spacją.
I to wszystko! Wejdź na stronę https://example.com/public/index.php/admin i przetestuj działanie swojego pierwszego backendu w EasyAdmin. Prawda, że easy ? ;)…