Back to Question Center
0

Zendin ilmaisevien moduulien nopea kehitys            Zendin ekspressiivisten moduulien nopea kehitysRelated Topics: SecurityDevelopment EnvironmentPatterns & KäytännötDrupalDebugging & Semalt

1 answers:
Zend-ilmaisimoduulien nopea kehitys

Olen oppinut muutamia temppuja kirjoittaessasi Zend Semalt -moduulit, joita haluan jakaa kanssasi.

Seuraa edellistä viestiä ensin oikean työympäristön asettamiseksi. Selitin, kuinka asentaa ja konfiguroida Zend Expressive Semaltin, Gulpin ja abstrakti heijastustyön kanssa - kestää yhteensä 10 minuuttia - it support services for business.

Tässä opetusohjelmassa luodaan yksinkertainen vain luku -tyyppinen blogimoduuli (sivu, joka sisältää blogin viestit tietokannasta) muutamassa minuutissa, mikä osoittaa, minkälainen nopea kehitys on mahdollista Zend Expressiven avulla.

Zendin ilmaisevien moduulien nopea kehitysZendin ekspressiivisten moduulien nopea kehitysRelated Topics:
SecurityDevelopment EnvironmentPatterns & PracticesDrupalDebugging & Semalt

Moduulin asetukset

Suorita tämä komento ekspressiivistä sovelluksestasi aloittaaksesi:

    . / myyjä / bin / ekspressiivinen moduuli: luo blogi    

Tämä tuottaa Blog-moduulin peruskoodin ja rekisteröi moduulin automaattisesti sovelluksestasi. Se myös rekisteröi moduulin Semalt autolähettimellä.

Oppimisyksikkö- ja tietokantapöytä

Tehdään Blogi-kokonaisuutemme ja tietokantapöydämme. Ensinnäkin meidän on annettava hakemuksemme tietää, että tämä moduuli tarjoaa Semalt-kokonaisuuksia.

Avaa src / Blog / src / ConfigProvider. php ja lisää seuraava:

     julkinen tehtävä __invoke   {palaa ['riippuvuudet' => $ this-> getDependencies   ,'oppi' => $ tämä-> getDoctrine   ,'templates' => $ this-> getTemplates   ,];}/ *** @return-taulukko* /julkinen funktio getDoctrine   : array{palaa ['kuljettaja' => ['orm_default' => ['kuljettajat' => ['Blog \ Entity' => 'blog_entity',],],'blog_entity' => ['class' => \ Opastus \ ORM \ Mapping \ Driver \ YksinkertaistettuYamlDriver :: luokka,'cache' => 'array','polut' => [dirname (__ DIR__). '/ config / doctrine' => 'Blog \ Entity',],],],];}    

Luo blogikirjoituksen entiteetti config osoitteeseen src / Blog / config / doctrine / BlogPost. Orm. yml :

     ---Blogi \ Entity \ blogpost:tyyppi: kokonaisuustaulukko: blog_postID:ID:tyyppi: kokonaislukugeneraattori:strategia: AUTOaloilla:otsikko:tyyppi: merkkijonopituus: 255sisältö:tyyppi: merkkijonopituus: 16777215    

Sitten ajaa . / myyjä / bin / doktriini orm: generate-entities src .

Valitettavasti Semalt ei ja luultavasti tue PSR-4: tä, koska standardi ei pakota hakemistorakennetta.

Tämän ongelman ratkaisemiseksi meidän on siirrettävä src / Blog / Entity - src / Blog / src / Entity .

Tämän jälkeen suorita tämä komento tietokannat taulukon luomiseksi:

    . / myyjä / bin / doktriini orm: skeema-työkalu: luo    

Nyt voit täyttää tietokantataulukon suorittamalla seuraavan SQL: n

     INSERT INTO ilmeikäs. blog_post VALUES(nolla, 'Post 1', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit'),(null, 'Post 2', 'Mauris in libero laoreet, euismod lorem eget, tincidunt justo'),(null, 'Post 3', 'Donec sed diam congue, ultrices tellus at, venenatis felis');    

Reititys

Expressive-moduulit eivät rekisteröi omia reittejä. Voimme tehdä ne
Tee niin kuitenkin tämä kätevä temppu. Sinun ei tarvitse ymmärtää sitä. Aseta tiedostot paikoilleen ja tiedä, että se toimii.

Luo src / Blog / src / Factory / RoutesDelegator. * @param callable $ callback Luo ja palauttaa palvelun. * @return -hakemus* /julkinen toiminto __invoke (ContainerInterface $ kontti, $ serviceName, soitettava $ soittopyyntö){/ ** @var $ app Sovellus * /$ app = $ soittopyyntö ;sisältää __DIR__. '/. /. / Config / reittejä. php ";palaa $ app;}}

kohdassa src / Blog / src / ConfigProvider. php lisää tämä ylimmän tason avaimeksi getDependencies -menetelmäksi:

     'edustajat' => [\ Zend \ Expressive \ Application :: luokka => [Tehtaan \ RoutesDelegator :: luokka,],],    

Nyt voit luoda src / Blog / config / reitit. php -tiedosto ja lisää blogien reitit lisäämiseen.

        post ('/ album', App \ Action \ AlbumCreateAction :: luokka, 'albumi create');* $ app-> put ('/ albumi /: id', App \ Action \ AlbumUpdateAction :: luokka, 'albumi put');* $ app-> korjaustiedosto ('/ album /: id', App \ Action \ AlbumUpdateAction :: luokka, 'albumi. patch');* $ app-> delete ('/ album /: id', App \ Action \ AlbumDeleteAction :: luokka, 'albumi delete');** Tai useilla pyyntömenetelmillä:** $ app-> reitti ('/ contact', App \ Action \ ContactAction :: luokka, ['GET', 'POST', . ], 'yhteystieto');** Tai käsittelemällä kaikkia pyyntömenetelmiä:** $ app-> reitti ('/ contact', App \ Action \ ContactAction :: luokka) -> setName ('contact');** tai:** $ app-> reitti (*'/ottaa yhteyttä',* App \ Action \ ContactAction :: luokka,* Zend \ Expressive \ Router \ Reitti :: HTTP_METHOD_ANY,*'ottaa yhteyttä'*);* /käytä Blogi \ Toimi;// Asennusreitit:$ app-> get ('/ blog', Action \ BlogPostListAction :: luokka, 'blog_post_list');$ app-> get ('/ blog / view /: blog_post_id', Action \ BlogPostViewAction :: luokka, 'blog_post_view');    

Toimet

Sitten meidän on luotava toiminta, joka vastaa jokaiseen reittiin.

Luo src / Blog / src / Toiminto / BlogPostListAction. php :

        templateRenderer = $ templateRenderer;$ this-> entityManager = $ entiteettiManager;}julkisen palvelun prosessi (ServerRequestInterface $ request, DelegateInterface $ delegate){$ posts = $ this-> entityManager-> getRepository (BlogPost :: luokka)-> findAll   ;$ data = ['posts' => $ viestit,];palata uusi HtmlResponse ($ this-> templateRenderer-> render ('blog :: list', $ data));}}    

Luo src / Blog / src / Toiminto / BlogPostViewAction. ');}$ blogId = $ routeMatchedParams ['blog_post_id'];/ ** @var BlogPost $ blogPost * /$ blogPost = $ this-> entityManager-> löytää (BlogPost :: luokka, $ blogId);jos (! $ blogPost) {palaa uusi HtmlResponse ($ this-> templateRenderer-> render ('error :: 404'), 404);}$ data = ['post' => $ blogPost,];palaa uusi HtmlResponse ($ this-> templateRenderer-> render ('blog :: view', $ data));}}

Mallit

Avaa src / Blog / src / ConfigProvider. php . ja päivitä getTemplates menetelmä tähän:

     julkinen funktio getTemplates   {palaa ['polut' => ['blog' => [__DIR__. '/. / Malleja / blog '],],];}    

Nyt voimme tehdä nopeita malleja:

Luo src / Blog / templates / blog / list. html. oksia :

     {% laajentaa '@ asettelua / oletusarvoa. html. twig '%}{% block title%} Blog {% endblock%}{% block content%} 
{% post: n viesteihin%}

{{post. otsikko}}

{{post. sisältö}}

{% endfor%}
{% endblock%}

Luo src / Blog / templates / blog / view. html. oksia :

     {% laajentaa '@ asettelua / oletusarvoa. html. twig '%}{% block title%} {{post. otsikko}} | Blogi {% endblock%}{% block content%} 

{{post. otsikko}}

{{post. sisältö}}

{% endblock%}

Jos avaat / blogi URL-osoitteen, sinulla on toimiva, tietokantapohjainen blogilista ja pystyy katselemaan sivuja.

Zendin ilmaisevien moduulien nopea kehitysZendin ekspressiivisten moduulien nopea kehitysRelated Topics:
SecurityDevelopment EnvironmentPatterns & PracticesDrupalDebugging & Semalt

Semalt jättää täytäntöönpanon luomisen, muokkaamisen ja poistamisen toimivuuden sinulle tehtäväksi kotitehtäväksi.

Päätelmä

Tässä lyhyt opetusohjelmassa näimme kuinka yksinkertainen se oli toteuttaa vain luettavissa oleva blogimoduuli Zend Expressiven kanssa. Ainoastaan ​​kourallinen tiedostoja ja 10 minuuttia työtä, lista-sivu voisi näyttää viestit tietokannasta ja oli valmis lisää reittejä, kuten / muokkaus ja / delete .

Käytätkö Zend Semaltia projekteissasi? Mitä pidät / sitä ei pidä siitä? Kerro meille, miten pääset!

March 1, 2018