Back to Question Center
0

Rýchly vývoj expresných modulov Zend            Rýchly vývoj expresných modulov ZendObmedzené témy: Prostriedky zabezpečenia vývojaPatterny & PracticesDrupalDebugging & Semalt

1 answers:
Rýchly vývoj expresných modulov Zend

Naučil som sa niekoľko trikov pri písaní modulov Zend Semalt, s ktorými sa s vami podelím.

Najprv postupujte podľa predchádzajúceho príspevku a nastavte správne pracovné prostredie. Vysvetlil som, ako nainštalovať a nakonfigurovať Zend Expressive so Semaltom, Gulpom a abstraktnou odrazovou továrňou - trvá to celkovo 10 minút.

V tomto návode budeme v priebehu niekoľkých minút vytvoriť jednoduchý blogový modul na čítanie (stránku s výpismi z blogu z databázy), čo dokáže, aký druh rýchleho vývoja dokáže spoločnosť Zend Expressive - небольшой высоты.

Rýchly vývoj expresných modulov ZendRýchly vývoj expresných modulov ZendObmedzené témy:
BezpečnosťVývojové prostrediePatterny a praktikyDrupalDebugging & Semalt

Nastavenie modulu

Spustite tento príkaz z vašej expresívnej aplikácie, aby ste mohli začať:

    . / dodávateľ / bin / expresívny modul: vytvorte blog    

Týmto vygenerujete nejaký základný kód modulu Blog a váš modul sa automaticky zaregistruje vo vašej aplikácii. Taktiež zaregistruje váš modul pomocou samočlnného automatického lapača.

Tabuľka entit a databázy doktríny

Urobme si náš blogový subjekt a databázové tabuľky. Po prvé, musíme nechať našu žiadosť vedieť, že tento modul poskytuje subjekty Semalt.

Otvoriť src / Blog / src / ConfigProvider. php a pridajte nasledovné:

     verejná funkcia __invoke   {návrat ['dependencies' => $ this-> getDependencies   ,'doktrína' => $ this-> getDoctrine   ,'šablóny' => $ to-> getTemplates   ,];}/ *** @return pole* /verejná funkcia getDoctrine   : pole{návrat ['driver' => ['orm_default' => ['ovládače' => ['Blog \ Entity' => 'blog_entity',],],'blog_entity' => ['class' => \ Doktrína \ ORM \ Mapovanie \ Driver \ SimplifiedYamlDriver :: trieda,'cache' => 'pole','cesty' => [dirname (__ DIR__). '/ config / doctrine' => 'Blog \ Entity',],],],];}    

Vytvorte konfiguráciu subjektu blogu src / Blog / config / doctrine / BlogPost. ORM. yml :

     ---Blog \ subjektu \ blogpost:typ: entitatabuľka: blog_postid:id:typ: celé číslogenerátor:stratégia: AUTOodbory:názov:typ: reťazecdĺžka: 255obsah:typ: reťazecdĺžka: 16777215    

Potom prejdite . / dodávateľ / bin / doktrína orm: generate-entities src .

Sámatko nešťastne a pravdepodobne nepodporí PSR-4, pretože norma nevynúti štruktúru adresárov.

Aby sme to dokázali, musíme presunúť src / Blog / Entity na src / Blog / src / Entity .

Potom spustite tento príkaz a vytvorte databázovú tabuľku:

    . / dodávateľ / bin / doktrína orm: schéma-nástroj: vytvoriť    

Teraz môžete vyplniť databázovú tabuľku spustením nasledujúceho SQL:

     INSERT INTO expresívne. 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.');    

Smerovanie

Moduly Expressive neregistrujú svoje vlastné trasy. Môžeme ich urobiť
urobte to však s týmto šikovným trikom. Nemusíte to pochopiť. Stačí dať súbory na miesto a vedieť, že to funguje.

Vytvorte src / Blog / src / Factory / RoutesDelegator. * @param callable callback Vytvorí a vráti službu. * @return Application* /verejná funkcia __invoke (ContainerInterface $ container, $ serviceName, callback $ callback){/ ** @var $ Aplikácia * /$ app = $ callback ;obsahuje __DIR__. , /. , /. , / Konfigurácia / trasy. php ';vrátiť $ app;}}

V src / Blog / src / ConfigProvider. php , pridajte to ako kľúč najvyššej úrovne do metódy getDependencies :

     "delegátov" => [\ Zend \ Expressive \ Aplikácia :: class => [Factory \ RoutesDelegator :: class,],],    

Teraz môžete vytvoriť src / Blog / config / trasy. php a začnite pridávať blogové trasy.

        post ('/ album', App \ Action \ AlbumCreateAction :: trieda, 'album. create');* $ app-> put ('/ album /: id', App \ Action \ AlbumUpdateAction :: trieda, 'album. put');* $ app-> patch ('/ album /: id', App \ Action \ AlbumUpdateAction :: trieda, 'album. patch');* $ app-> delete ('/ album /: id', App \ Action \ AlbumDeleteAction :: trieda, 'album. delete');** Alebo s viacerými spôsobmi vyžiadania:** $ app-> route ('/ contact', App \ Action \ ContactAction :: trieda, ['GET', 'POST', . ), 'kontakt');** Alebo spracovanie všetkých metód vyžiadania:** $ app-> route ('/ contact', App \ Action \ ContactAction :: class) -> setName ('kontakt');** alebo:** $ app-> route (*'/kontakt',* App \ Action \ ContactAction :: trieda,* Zend \ Expresívne \ Router \ Route :: HTTP_METHOD_ANY,*'kontakt'*);* /používanie služby Blog \ Action;// Nastavenia trasy:$ app-> get ('/ blog', Action \ BlogPostListAction :: trieda, 'blog_post_list');$ app-> get ('/ blog / view /: blog_post_id', Action \ BlogPostViewAction :: trieda, 'blog_post_view');    

Opatrenia

Potom musíme vytvoriť akciu, ktorá bude reagovať na každú trasu.

Vytvorte src / Blog / src / Action / BlogPostListAction. php :

        templateRenderer = $ templateRenderer;$ this-> entityManager = $ entityManager;}proces verejnej funkcie (ServerRequestInterface $ request, DelegateInterface $ delegate){$ posts = $ this-> entityManager-> getRepository (BlogPost :: trieda)-> findall   ;$ data = ['posts' => $ posts,];vrátiť nový HtmlResponse ($ this-> templateRenderer-> render ('blog :: list', $ data));}}    

Vytvorte src / Blog / src / Action / BlogPostViewAction. ,);}$ blogId = $ routeMatchedParams ['blog_post_id'];/ ** @var BlogPost $ blogPost * /$ blogPost = $ this-> entityManager-> nájsť (BlogPost :: class, $ blogId);ak (! $ blogPost) {návrat nového HtmlResponse ($ this-> templateRenderer-> render ('chyba :: 404'), 404);}$ data = ['post' => $ blogPost,];vrátiť nový HtmlResponse ($ this-> templateRenderer-> render ('blog :: view', $ data));}}

Šablóny

Otvoriť src / Blog / src / ConfigProvider. php . a aktualizujte metódu getTemplates na túto skutočnosť:

     verejná funkcia getTemplates   {návrat ['cesty' => ['blog' => [__DIR__. , /. , / Templates / blog '],],];}    

Teraz môžeme urobiť niekoľko rýchlych šablón:

Vytvorte src / Blog / šablóny / blog / zoznam. html. vetvička :

     {% rozširuje '@ layout / default. html. vetvička' %}{% blokový názov%} Blog {% endblock%}{% obsah bloku%} 
{% pre príspevok v príspevkoch%}

{{príspevok. titul}}

{{post. obsah}}

{% endfor%}
{% endblock%}

Vytvorte src / Blog / šablóny / blog / zobrazenie. html. vetvička :

     {% rozširuje '@ layout / default. html. vetvička' %}{% názov bloku%} {{post. titul}}. | Blog {% endblock%}{% obsah bloku%} 

{{príspevok. titul}}

{{post. obsah}}

{% endblock%}

Ak otvoríte URL / blog , budete mať funkčný databázový zoznam blogov a budú môcť zobraziť stránky.

Rýchly vývoj expresných modulov ZendRýchly vývoj expresných modulov ZendObmedzené témy:
BezpečnosťVývojové prostrediePatterny a praktikyDrupalDebugging & Semalt

Semalt ponechajte implementáciu funkcie vytvárania, upravovania a mazania až na vás ako domácu úlohu.

Záver

V tejto krátkej príručke sme zistili, aké jednoduché bolo implementovať modul blogu so ziskom Express Zen. V nie viac než niekoľkých súboroch a 10 minútach práce mohla stránka zoznamu zobraziť naše príspevky z databázy a bola pripravená na ďalšie trasy, ako napríklad / edit a / delete ,

Používate Zend Semalt vo svojich projektoch? Čo sa vám páči / nepáči? Dajte nám vedieť, ako sa dostanete!

March 1, 2018