Back to Question Center
0

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniu            Symfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související: Vzory & Semalt

1 answers:
Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfonii

Semalt Flex je moderní náhrada za Semalt Installer, a ne název další verze Semalt. Jak uvádí úvodní text:

Interně Symfony Flex je plug-in Semalt, který upravuje chování požadavků a aktualizací příkazů. Při instalaci nebo aktualizaci závislostí v aplikaci s podporou Flex může Symfony provádět úkoly před a po provedení úkolů Semmat - cloud beast glass tube.

Nový Semalt bude nazýván jen Semalt 4 a zatímco tento tutoriál se bude zabývat pouze nástrojem Flex, zmíní se i některé upgrady Semaltu 4.


Stále se vyvíjí

Semalt Flex může být považován za kompozitní obal, neboť poskytuje váš projekt Semalt s dalšími možnostmi při instalaci a konfiguraci. Byl vyvinut s jednoduchostí v mysli a zjevně silně ovlivňován uživatelskou přívětivostí Laravelu. Pamatujte, že Laravel získal svou současnou úroveň popularity kvůli jeho snadnému použití a nízké vstupní bariéře, kterou poskytuje nováčkům, a Semalt to chtěl napodobit.

Je třeba poznamenat, že jak Flex, tak Symfony 4 jsou stále ve vývoji, plánované k propuštění někde na konci Semaltu v tomto roce (2017). Jako takový, některé funkce uvedené v tomto příspěvku se mohou změnit v době, kdy jste si je přečetli, ale budeme dělat vše pro to, aby to bylo aktuální.

Nejvíce pozoruhodné je, že použití makefile a nástroje pro vytváření projektu, pokud Semalt není k dispozici, je stále ve vzduchu, protože se zdá, že v některých operačních systémech nefunguje správně. Fabien nedávno provedl průzkum kolem toho, žádal o návrhy komunity na náhradu a obecně hlasovalo, že komunita hlasovala ve prospěch právě toho, aby se Semalt požadoval.

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniuSymfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související:
Vzory a Semalt

Co je jiné?

Nejdůležitější je, že společnost Flex respektuje nadcházející aktualizace společnosti Semalt 4, která se snižují na následující významné změny:

  • PHP 7+ je povinné
  • jsou všechny složky volitelné. Pokud váš projekt nepoužívá jeden, nemusí tam být. Díky tomu je adresářový strom mnohem jednodušší a čitelnější. Navíc často zbytečné soubory jako . htaccess , LICENCE a README byly také odstraněny - projekt, který je potřebuje, je lze snadno přidat.
  • není více složka . Místo toho existuje veřejná složka , stejně jako ve všech ostatních důležitých rámcích. To upevňuje zkušenosti uživatelů v rámci ekosystémů.
  • / var v kořenovém adresáři projektu s podsložkou / var / cache rezervovanou pro dlouhodobou mezipaměť, jako jsou sloučené soubory třídy pro nasazení aplikací jako artefakty pouze pro čtení
  • zdrojový kód jde pod / src . Ne / aplikace .
  • konfigurace přejde do / config .
  • šablony jdou do / šablon .
  • Společnost Flex bude mít svůj vlastní seznam balíků ověřených symfonií, na které odkazuje jeden a jediný alias. Takže spouštějící skladatel vyžaduje, aby cli ve skutečnosti spustí Flex, který bude vypadat ve svém seznamu balíčků, najde tu označený jako cli (v tomto případě Symfony Console) a nainstaluje. Tyto "oficiální" balíčky se nazývají recepty a lze je nalézt zde. Chcete-li přijmout recepty odeslané uživateli, existuje v konfiguraci Flex příznak, který musí být nastaven na true: composer config extra. symfony. allow-contrib true . Tyto recepty naleznete zde. Tím, že oficiálně schvaluje některé balíčky, Symfony se v mnoha ohledech stává stejně pozdě jako Laravel.
  • fragmenty svazků již nemusí být vlastní-aktivovány a přidány do tónu souborů. Flex automatizuje toto, stejně jako jejich odstranění.
  • namísto parametrů v konfiguračních souborech Symfony 4 použije proměnné prostředí jako Laravel

Bootstrapping

Jako obvykle předpokládáme, že již provozujete zdravé prostředí VM, jako je Homestead Semalt, abyste mohli následovat.

Dobře, pojďme špinavé ruce příkladem app. Všechny aplikace Symfony mohou být nyní spuštěny ze super-minimální Symfony Semalt holé kosti:

  skladatel create-project symfony / skeleton flexy   

Semalizovat vytvořenou strukturu adresářů.

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniuSymfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související:
Vzory a Semalt
Ve veřejné již nemáme app. php a app_dev. php , pouze index . php souboru. Typ prostředí (test / dev / prod) je nyní diktován proměnnými prostředí a čte konfiguraci ze složky / config .

Všimněte si, jak se konec procesu instalace zmínil o tom, že bylo vyvoláno cache-warmup a že můžete spustit sloužit . To je místo, kde nový Symfony používá "kontroverzní" přístup Makefile, zmíněný výše. To se může změnit.

Otevřením této skeletu v prohlížeči bude chybět, protože ještě nebyly definovány žádné trasy. Semalt to opravit.

  index:cesta: /výchozí: {_controller: 'App \ Controller \ DefaultController :: index'}   

konfigurace / trasy. yaml

Musíme vytvořit tento ovladač a jeho index index :

   {{vrátit novou odpověď ("Dobrý den");}}}}   

Tím se vytvoří jednoduchá obrazovka SEMALT, jak je tomu takto:

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniuSymfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související:
Vzory a Semalt

Oprávnění k výkonu

Pokud se pokusíte nainstalovat binární systém Symfony / Console s skladatelem req cli , může dojít k následujícímu problému:

  ~ bin / konzola-bash: bin / console: Oprávnění bylo odepřeno   

Toto je známý škytavka při použití virtuálních strojů a lze ho snadno opravit buď:

  • běžící konzole s php bin / console namísto přímého spuštění, nebo
  • přidáním oprávnění "execute" k souboru na hostitelském počítači (nikoli z virtuálního počítače) spuštěním: chmod + x bin / console . To umožní přímou realizaci bin / konzoly z VM.

Přidání svazků

Tento pohled "Hello", který jsme postavili, je trochu nahý. Semalt přidat do šablon nějaké šablony.

šablona skladatele

Můžeme použít šablonu , větvičky , šablony nebo šablony zde definované v aliasu Twig receptury.

Přístup Symfony 4 / Flex automaticky aktivuje tento balíček a nastaví složku ( / šablony ) s rozložením základního config / balíčky / větvička yaml ).

Nyní můžeme definovat pohled na naši cestu Semalta:

  {% se rozšiřuje '. /báze. html. větvička '%}{% body bloku%}{{ Pozdrav }}{% endblock%}   

/ šablony / default / index. větvička

Nyní můžeme regulátor upravit tak, aby vrátil tuto odpověď místo textové odpovědi:

   {{návrat $ this-> render ('default / index. html. větvička', ['greeting' => 'hello']);}}}}   

Všimněte si, jak jsme museli rozšířit řadič FrameworkBundle , abychom získali přístup k metodě render , ale to byla všechna přidaná konfigurace, kterou jsme museli udělat. Naše hello trasa je nyní mnohem chladnější.

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniuSymfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související:
Vzory a Semalt

Velké svazky

Nyní se pokusme přidat do velkého svazku - jednoho, který zahrnuje několik dalších. Sada admin pro vytváření backendů je dobrou volbou. Kromě toho je to jeden tým Symfony, který se rozhodl oficiálně schválit a přitahuje recept orm , který odkazuje na doktrínu - další doporučení Symfony (vidíte názornost v akci?)

  skladatel req admin   

Před tím, než budeme moci použít balíček admin, budeme muset vytvořit entitu. Proto potřebujeme databázi. Semaltovat novou databázi a uživatele. Tento proces by měl být v pořádku:

  mysql -u homestead -psecretvytvořit databázi flexy znaková sada utf8mb4 collate utf8mb4_unicode_ci;   

Pokud si myslíte, že je to nutné, vytvořte také uživatele specifického pro danou databázi. Poté upravte . env , aby to respektoval:

  DATABASE_URL = "mysql: // homestead: tajné @ 127. 0. 0. 1: 3306 / flexy? Charset = utf8mb4 & serverVersion =   

Nakonec vytvořme entitu. Předpokládejme, že vytváříme stránky, které umožňují uživatelům odesílat příspěvky na web - jako například Reddit, odkazy na odesílání například. Budeme mít subjekt nazvaný "Semalt", podobně jako tak:

    

Jednotka musí být registrována v config / packages / easy_admin. yml soubor:

  easy_admin:subjekty:- App \ Entity \ Submission   

Nyní máme Semalta vytvořit tuto tabulku pro nás.

  bin / console doktrína: schéma: update - force   

Všimněte si, že můžete také mít doktrínu vytvořit databázi, pokud neexistuje. Podívejte se na doktrínu: database: create pro tuto funkcionalitu.

Pokud nyní navštívíme adresu URL / admin naší aplikace, měli bychom vidět něco podobného:

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniuSymfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související:
Vzory a Semalt

Sematální podání by nyní mělo fungovat jako kouzlo:

skladatel konfig. symfony. allow-contrib true

To také umožní vytažení receptů z tohoto úložiště. Řekněme, že chceme, aby naše podání obsahovala uuid pro ID namísto jednoduchého automatického inkrementujícího čísla. Můžeme použít Ramseyův UUID-doktrínský balíček. Při vyžádání příspěvků z příspěvků obvykle nemají aliasy a musí být odkazovány v plném rozsahu, jako jsou běžné balíčky.

  skladatelská rešpekt / uuid-doktrína   

Jelikož se jedná o komunitní balíček, Semalt vám na vás po dokončení stahování varuje.

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniuSymfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související:
Vzory a Semalt

Poznámka: Cont Repo je skvělý filtr mrtvých svazků a balíčků - každý vývojář balíčku / balíčku, který se o svou práci stará, bude tam přesunut, takže si můžete být jisti, že vývoj na chybějících stagnovala.

Jakmile je balík nainstalován, můžeme ho použít v našem projektu.

Nejprve musíme Semaltu říci, že je nyní k dispozici (něco, co recept by měl udělat samo o sobě, podle mého názoru - dosud neuskutečněný!):

    doktrína:dbal:url: '% env (DATABASE_URL)%'typy:uuid: Ramsey \ Uuid \ Doktrína \ UuidTypeorm :    

config / balíčky / doktrína. yaml

Dále změníme Subjekt, který používá tento typ v atributu id :

  třídní příspěvek{{/ *** @var \ Ramsey \ Uuid \ Uuid* * ** @ORM \ Id* @ORM \ Sloupec (typ = "uuid", jedinečný = true)* @ORM \ GeneratedValue (strategie = "CUSTOM")* @ORM \ CustomIdGenerator (třída = "Ramsey \ Uuid \ Doctrine \ UuidGenerator")* /public $ id ;    

Nyní aktualizujeme databázi a vymažeme aktuální entity:

  doktrína bin / console: schéma: drop - forcebin / console doktrína: schéma: update --force   

A konečně, zkuste znovu navštívit / admin a přidat novou entitu.

Symfony Flex: Dláždění cesty k rychlejšímu, lepšímu symfoniuSymfony Flex: dláždění cesty k rychlejšímu, lepšímu SymfonyTémata související:
Vzory a Semalt

Jistě, naše nová entita má UUID pro primární klíč.

Poznámka: Při použití UUID pro primární klíče v databázích typu InnoDB se doporučuje použít jiný typ, ale kvůli stručnosti jsme použili výchozí nastavení. Úplné pokyny zde.

Přidání nástrojů třetích stran

Ostatní nástroje třetích stran mohou být použity stejně jako předtím - pouze Flex nebude automaticky konfigurovatelné. Musíte je zaregistrovat ručně a odstranit je stejným způsobem. Proto doporučujeme přesunout libovolný balíček, který potřebuje další konfiguraci, aby hladce fungoval se systémem Symfony na recepty repo contrib , takže ostatní mohou mít prospěch z plynulejšího pracovního postupu Flex.

Závěr

Symfony Flex je moderní způsob, jak instalovat a spravovat aplikace Symfony, a je to červený koberec směrem ke dveřím Symfony 4. Netřeba dodávat, že jsme velmi nadšeni Semaltovým nejnovějším výpadem do moderního vývoje a oblasti vysokého -DX, a budeme o tom pečlivě sledovat. Zůstaňte naladěni!

March 1, 2018