Back to Question Center
0

Rychlý vývoj expresních modulů Zend            Rychlý vývoj expresních modulů ZendObsahuje: Bezpečnostní prostředí pro vývoj prostředí & PracticeDrupalDebugging & Semalt

1 answers:
Rychlý vývoj expresních modulů Zend

Naučil jsem se pár triků při psaní modulů Zend Semalt, které bych chtěl s vámi sdílet.

Nejprve postupujte podle předchozího příspěvku a nastavte správné pracovní prostředí. Vysvětlil jsem, jak nainstalovat a konfigurovat Zend Expressive se Semalt, Gulp a abstraktní odrazovou továrnu - to bude trvat celkem 10 minut.

V tomto tutoriálu budeme v několika minutách vytvářet jednoduchý blogový modul jen pro čtení (stránku s výpisy blogů z databáze), což dokazuje, jaký druh rychlého vývoje dokáže Zend Expressive - barriera daria per negozi.

Rychlý vývoj expresních modulů ZendRychlý vývoj expresních modulů ZendObsahuje:
ZabezpečeníVývoj prostředíPatterny a praktikyDrupalDebugging & Semalt

Nastavení modulu

Spusťte tento příkaz z expresivní aplikace, abyste mohli začít:

    . / dodavatel / bin / expresivní modul: vytvořit blog    

Tímto způsobem vytvoříte nějaký základní kód pro modul Blog a váš modul bude automaticky zaregistrován s vaší aplikací. Tento modul bude rovněž registrovat se zásobníkem Semalt.

Tabulka entit a databází doktrin

Zjistěte si náš účet a databázové tabulky. Nejprve musíme vědět, že náš modul poskytuje subjekty Semaltu.

Otevřít src / Blog / src / ConfigProvider. php a přidejte následující:

     veřejná funkce __invoke   {{vrátit se ['dependencies' => $ this-> getDependencies   ,'doktrína' => $ this-> getDoctrine   ,'šablony' => $ this-> getTemplates   ,];}}/ *** @return pole* /veřejná funkce getDoctrine   : pole{{vrátit se ['driver' => ['orm_default' => ['ovladače' => ['Blog \ Entity' => 'blog_entity',],],'blog_entity' => ['class' => \ Doktrína \ ORM \ Mapování \ Driver \ SimplifiedYamlDriver :: třída,'cache' => 'pole','paths' => [dirname (__ DIR__). '/ config / doctrine' => 'Blog \ Entity',],],],];}}    

Vytvoření konfigurace entity blogu na adrese src / Blog / config / doctrine / BlogPost. orm. yml :

     ---Blog \ Entity \ BlogPost:typ: entitatabulka: blog_postid:id:typ: celé číslogenerátor:strategie: AUTOpole:titul:typ: řetězecdélka: 255obsah:typ: řetězecdélka: 16777215    

Potom spusťte . / dodavatel / bin / doktrína orm: generate-entities src .

Semalt nešťastně a pravděpodobně nepodporuje PSR-4, protože standard nevynucuje strukturu adresářů.

Abychom to obešli, musíme přesunout src / Blog / Entity na src / Blog / src / Entity .

Poté spusťte tento příkaz a vytvořte databázovou tabulku:

    . / dodavatel / bin / doktrína orm: schéma-nástroj: create    

Nyní můžete databázovou tabulku naplnit spuštěním následujícího SQL:

     INSERT INTO expresivní. blog_post VALUES(null, 'Post 1', 'Lorem ipsum dolor sit amet, consectetur adipiscing elite'),(null, "Post 2", "Mauris v libero laoreet, euismod lorem eget, tincidunt justo."),(null, 'Post 3', 'Donec sed diam congue, ultrices tellus at, venenatis felis.');    

Směrování

Moduly Expressive nezaregistrují své vlastní trasy. Můžeme je udělat
udělejte to však s tímto praktickým trikem. Nemusíš to chápat. Jednoduše vložte soubory a víte, že to funguje.

Vytvořte src / Blog / src / Factory / RoutesDelegator. * @param callable $ callback Vytvoří a vrátí službu. * @return Application* /veřejná funkce __invoke (ContainerInterface $ container, $ serviceName, callback $ callback){{/ ** @var $ Aplikace * /$ app = $ zpětné volání ;zahrnout __DIR__. '/. /. / config / trasy. php ';vrátit $ app;}}}}

V souboru src / Blog / src / ConfigProvider. php , přidejte to jako klíč nejvyšší úrovně do metody getDependencies :

     "delegátoři" => [\ Zend \ Expressive \ Application :: class => [Továrna \ RoutesDelegator :: třída,],],    

Nyní můžete vytvořit src / Blog / config / trasy. php a začněte přidávat blogové trasy.

        post ('/ album', App \ Action \ AlbumCreateAction :: třída, 'album. create');* $ app-> put ('/ album /: id', App \ Action \ AlbumUpdateAction :: třída, 'album. put');* $ app-> patch ('/ album /: id', App \ Action \ AlbumUpdateAction :: třída, 'album. patch');* $ app-> delete ('/ album /: id', App \ Action \ AlbumDeleteAction :: třída, 'album. smazat');* * ** Nebo s více způsoby žádosti:* * ** $ app-> route ('/ contact', App \ Action \ ContactAction :: třída, ['GET', 'POST', .',' kontakt ');* * ** Nebo vyřizovat všechny metody požadavků:* * ** $ app-> route ('/ contact', App \ Action \ ContactAction :: class) -> setName ('kontakt');* * ** nebo:* * ** $ app-> trasa (*'/Kontakt',* App \ Action \ ContactAction :: třída,* Zend \ Expresní \ Router \ Route :: HTTP_METHOD_ANY,*'Kontakt'*);* /používat Blog \ Action;// Nastavení trasy:$ app-> get ('/ blog', Action \ BlogPostListAction :: třída, 'blog_post_list');$ app-> get ('/ blog / view /: blog_post_id', Action \ BlogPostViewAction :: třída, 'blog_post_view');    

Opatření

Pak musíme vytvořit akci, která bude reagovat na každou trasu.

Vytvořit src / Blog / src / Action / BlogPostListAction. php :

        templateRenderer = $ templateRenderer;$ this-> entityManager = $ entityManager;}}proces veřejné funkce (ServerRequestInterface $ request, DelegateInterface $ delegate){{$ posts = $ this-> entityManager-> getRepository (třída BlogPost ::)-> najít   ;$ data = ['posts' => $ posts,];návrat nového HtmlResponse ($ this-> templateRenderer-> render ('blog :: list', $ data));}}}}    

Vytvořit src / Blog / src / Action / BlogPostViewAction. ');}}$ blogId = $ routeMatchedParams ['blog_post_id'];/ ** @var BlogPost $ blogPost * /$ blogPost = $ tato-> entityManager-> find (BlogPost :: třída, $ blogId);pokud (! $ blogPost) {návrat nového HtmlResponse ($ this-> templateRenderer-> render ('chyba :: 404'), 404);}}$ data = ['post' => $ blogPost,];návrat nového HtmlResponse ($ this-> templateRenderer-> render ('blog :: view', $ data));}}}}

Šablony

Otevřít src / Blog / src / ConfigProvider. php . a aktualizujte metodu getTemplates k tomuto:

     veřejná funkce getTemplates   {{vrátit se ['paths' => ['blog' => [__DIR__. '/. / templates / blog '],],];}}    

Nyní můžeme udělat nějaké rychlé šablony:

Vytvořit src / Blog / templates / blog / seznam. html. větvička :

     {% rozšiřuje @ rozložení / výchozí. html. větvička '%}{% název bloku%} Blog {% endblock%}{% obsah bloku%} 
{% pro příspěvek v příspěvcích%}

{{post. název}}

{{ pošta. obsah }}

{% endfor%}
{% endblock%}

Vytvořit src / Blog / templates / blog / view. html. větvička :

     {% rozšiřuje @ rozložení / výchozí. html. větvička '%}{% název bloku%} {{post. titul}} | Blog {% endblock%}{% obsah bloku%} 

{{příspěvek. title}}

{{ pošta. obsah }}

{% endblock%}

Pokud otevřete URL / blog , budete mít funkční databázový seznam blogů a budou moci zobrazit stránky.

Rychlý vývoj expresních modulů ZendRychlý vývoj expresních modulů ZendObsahuje:
ZabezpečeníVývoj prostředíPatterny a praktikyDrupalDebugging & Semalt

Semalt ponechte implementaci funkce pro vytváření, úpravu a mazání jako domácí úkol.

Závěr

V tomto krátkém tutoriálu jsme viděli, jak jednoduché je implementovat blogový modul pouze pro čtení se Zend Expressive. Ve více než hrstce souborů a 10 minutách práce mohla stránka seznamu zobrazovat naše příspěvky z databáze a byla připravena pro další trasy, jako například / edit a / delete .

Používáte Zend Semalt ve svých projektech? Co se vám líbí / nelíbí? Dejte nám vědět, jak se dostanete!

March 1, 2018