Back to Question Center
0

Ταχεία ανάπτυξη των εκφραστικών μονάδων Zend            Ταχεία ανάπτυξη των εκφραστικών μονάδων Zend Σχετικά θέματα: ΑσφάλειαΑνάπτυξη ΠεριβάλλοντοςΠάτεροι & PracticesDrupalDebugging & Semalt

1 answers:
Ταχεία ανάπτυξη των εκφραστικών μονάδων Zend

Έχω μάθει μερικά κόλπα όταν γράφω τις μονάδες Zend Semalt που θέλω να μοιραστώ μαζί σας.

Ακολουθήστε πρώτα την προηγούμενη θέση για να δημιουργήσετε ένα κατάλληλο περιβάλλον εργασίας. Εξήγησα πώς να εγκαταστήσω και να ρυθμίσω το Zend Expressive με Semalt, Gulp και ένα εργοστάσιο αφηρημένης αντανάκλασης - θα διαρκέσει συνολικά 10 λεπτά.

Σε αυτό το σεμινάριο, θα δημιουργήσουμε σε λίγα λεπτά μια απλή ενότητα ιστολογίου μόνο για ανάγνωση (μια σελίδα που αναφέρει αναρτήσεις ιστολογίου από μια βάση δεδομένων), δείχνοντας το είδος της ταχείας ανάπτυξης με το Zend Expressive.

Ταχεία ανάπτυξη των εκφραστικών μονάδων ZendΤαχεία ανάπτυξη των εκφραστικών μονάδων Zend Σχετικά θέματα:
ΑσφάλειαΕγκατάσταση ΠεριβάλλοντοςΠαρακολούθηση & ΠρακτικέςDrupalΕνεργοποίηση & Επεξεργασία

Ρύθμιση μονάδας

Εκτελέστε αυτήν την εντολή από την εκφραστική σας εφαρμογή για να ξεκινήσετε:

     - paie belgique. / προμηθευτής / δοχείο / εκφραστική ενότητα: δημιουργήστε το Blog    

Αυτό θα δημιουργήσει κάποιο βασικό κώδικα για μια ενότητα Blog και θα καταχωρίσει αυτόματα την ενότητα σας με την εφαρμογή σας. Θα καταχωρήσει επίσης τη μονάδα σας με το αυτοματοποιητή Semalt.

Πίνακας οντοτήτων και βάσης δεδομένων

Ας φτιάξουμε το Blog της οντότητας μας και τους πίνακες βάσης δεδομένων. Πρώτον, πρέπει να αφήσουμε την αίτησή μας να γνωρίζει ότι αυτή η ενότητα παρέχει φορείς Semalt.

Άνοιγμα src / Blog / src / ConfigProvider. php και προσθέστε τα ακόλουθα:

   δημόσια λειτουργία __invoke   {ΕΠΙΣΤΡΟΦΗ ['εξαρτήσεις' => $ this-> getDependencies   ,'δόγμα' => $ this-> getDoctrine   ,'πρότυπα' => $ this-> getTemplates   ,] ·}}/ *** @return array* /δημόσια λειτουργία getDoctrine   : πίνακας{ΕΠΙΣΤΡΟΦΗ ['οδηγός' => ['orm_default' => ['οδηγούς' => ['Blog \ Entity' => 'blog_entity',],],'blog_entity' => ['class' => \ Δόγμα \ ORM \ Χαρτογράφηση \ Οδηγός \ SimplifiedYamlDriver :: class,'cache' => 'πίνακας','διαδρομές' => [dirname (__ DIR__). '/ config / doctrine' => 'Blog \ Οντότητα',],],],] ·}}    

Δημιουργήστε ένα config στο blog post στο src / Blog / config / doctrine / BlogPost. orm. yml :

   ---Blog \ Ενότητα \ BlogPost:τύπου: οντότηταπίνακας: blog_postταυτότητα:ταυτότητα:πληκτρολογήστε: ακέραιοςγεννήτρια:στρατηγική: ΑΥΤΟΜΑΤΗπεδία:τίτλος:τύπου: συμβολοσειράμήκος: 255περιεχόμενο:τύπου: συμβολοσειράμήκος: 16777215    

Στη συνέχεια, τρέξτε . / πωλητής / bin / δόγμα orm: generate-entities src .

Δυστυχώς, η Semalt δεν υποστηρίζει και πιθανότατα δεν θα υποστηρίξει το PSR-4, επειδή το πρότυπο δεν αναγκάζει μια δομή καταλόγου.

Για να το πετύχουμε, πρέπει να μετακινήσουμε src / Blog / Entity στο src / Blog / src / Entity .

Στη συνέχεια, εκτελέστε αυτήν την εντολή για να δημιουργήσετε τον πίνακα βάσης δεδομένων σας:

    . / πωλητής / bin / δόγμα orm: εργαλείο σχήματος: δημιουργία    

Τώρα, μπορείτε να συμπληρώσετε τον πίνακα βάσης δεδομένων εκτελώντας την ακόλουθη SQL:

   ΕΙΣΑΓΩΓΗ ΣΕ εκφραστικό. blog_post VALUES(null, '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 στο, venenatis felis').    

Δρομολόγηση

Οι μονάδες Expressive δεν καταχωρούν τις δικές τους διαδρομές. Μπορούμε να τα κάνουμε
το κάνετε αυτό, ωστόσο, με αυτό το εύχρηστο τέχνασμα. Δεν χρειάζεται να το καταλάβετε. Απλώς βάλτε τα αρχεία στη θέση τους και ξέρετε ότι λειτουργεί.

Δημιουργήστε ένα src / Blog / src / Factory / RoutesDelegator. * @param callable $ callback Δημιουργεί και επιστρέφει την υπηρεσία. * @ Επιστροφή αίτηση* /δημόσια λειτουργία __invoke (ContainerInterface $ container, $ serviceName, callback $ καλούντος){/ ** @var $ app Εφαρμογή * /$ app = $ callback ;περιλαμβάνουν __DIR__. '/. /. / config / routes. php ';επιστροφή $ app;}}}}

Στο src / Blog / src / ConfigProvider. php , προσθέστε το ως κλειδί πίνακα κορυφής στη μέθοδο getDependencies :

   «εκπρόσωποι» => [\ Zend \ Expressive \ Application :: class => [Factory \ RoutesDelegator :: κατηγορία,],],    

Τώρα μπορείτε να δημιουργήσετε μια src / Blog / config / διαδρομές. php και αρχίστε να προσθέτετε διαδρομές blog.

    post ('/ album', App \ Action \ AlbumCreateAction :: class, 'album. create');* $ app-> put ('/ album /: id', App \ Action \ AlbumUpdateAction :: class, 'album. put');* $ app-> patch ('/ album /: id', App \ Action \ AlbumUpdateAction :: κλάση, 'album patch');* $ app-> delete ('/ album /: id', App \ Action \ AlbumDeleteAction :: κατηγορία, 'album. delete');** Ή με πολλαπλές μεθόδους αίτησης:** $ app-> route ('/ contact', App \ Action \ ContactAction :: class, ['GET', 'POST', . ], 'επαφή').** Ή χειρισμός όλων των μεθόδων αίτησης:** $ app-> route ('/ contact', App \ Action \ ContactAction :: class) -> setName ('επαφή');** ή:** $ app-> διαδρομή (*'/Επικοινωνία',* App \ Action \ ContactAction :: κατηγορία,* Zend \ Έκφραση \ Router \ Διαδρομή :: HTTP_METHOD_ANY,*'Επικοινωνία'*);* /χρησιμοποιήστε το Blog \ Action;// Διαδρομές εγκατάστασης:$ app-> get ('/ blog', Action \ BlogPostListAction :: κατηγορία, 'blog_post_list');$ app-> get ('/ blog / view /: blog_post_id', Action \ BlogPostViewAction :: class, 'blog_post_view');    

Δράσεις

Στη συνέχεια, πρέπει να δημιουργήσουμε μια δράση για να ανταποκριθούμε σε κάθε διαδρομή.

Δημιουργία src / Blog / src / Action / BlogPostListAction. php :

    templateRenderer = $ templateRenderer;$ this-> entityManager = $ entityManager.}}δημόσια διαδικασία λειτουργίας (ServerRequestInterface $ request, DelegateInterface $ delegate){$ posts = $ this-> entityManager-> getRepository (κατηγορία BlogPost ::)-> findAll   ;$ data = ['posts' => $ posts,] ·επιστρέψτε το νέο HtmlResponse ($ this-> templateRenderer-> render ('blog :: list', $ data));}}}}    

Δημιουργία src / Blog / src / Action / BlogPostViewAction. ').}}$ blogId = $ routeMatchedParams ['blog_post_id']./ ** @var BlogPost $ blogPost * /$ blogPost = $ αυτό-> οντότηταManager-> find (BlogPost :: class, $ blogId);αν (! $ blogPost) {επιστρέψτε το νέο HtmlResponse ($ this-> templateRenderer-> render ('error :: 404'), 404);}}$ data = ['post' => $ blogPost,] ·επιστρέψτε το νέο HtmlResponse ($ this-> templateRenderer-> render ('blog :: view', $ data));}}}}

Πρότυπα

Άνοιγμα src / Blog / src / ConfigProvider. php . και ενημερώστε τη μέθοδο getTemplates σε αυτό:

   δημόσια λειτουργία getTemplates   {ΕΠΙΣΤΡΟΦΗ ['διαδρομές' => ['blog' => [__DIR__. '/. / templates / blog '],],] ·}}    

Τώρα μπορούμε να κάνουμε μερικά γρήγορα πρότυπα:

Δημιουργία src / Blog / templates / blog / λίστα. html. κλαδί :

   {% επεκτείνει '@ διάταξη / προεπιλογή. html. twig '%}{% block title%} Ιστολόγιο {% endblock%}{% block content%}
{% για δημοσίευση σε αναρτήσεις%}

{{post. τίτλος }}

{{ Θέση. περιεχόμενο}}

{% endfor%}
{% endblock%}

Δημιουργία src / Blog / templates / blog / προβολή. html. κλαδί :

   {% επεκτείνει '@ διάταξη / προεπιλογή. html. twig '%}{% τίτλος μπλοκ%} {{post. τίτλος}}. | Blog {% endblock%}{% block content%}

{{post. τίτλος}}

{{ Θέση. περιεχόμενο}}

{% endblock%}

Εάν ανοίξετε τη διεύθυνση URL / blog , θα έχετε μια λειτουργική βάση δεδομένων με βάση τη βάση δεδομένων και θα μπορείτε να προβάλετε σελίδες.

Ταχεία ανάπτυξη των εκφραστικών μονάδων ZendΤαχεία ανάπτυξη των εκφραστικών μονάδων Zend Σχετικά θέματα:
ΑσφάλειαΕγκατάσταση ΠεριβάλλοντοςΠαρακολούθηση & ΠρακτικέςDrupalΕνεργοποίηση & Επεξεργασία

Semalt αφήστε την εφαρμογή της δημιουργίας, επεξεργασίας και διαγραφής της λειτουργικότητας μέχρι εσάς ως οικιακή εργασία.

Συμπέρασμα

Σε αυτό το σύντομο σεμινάριο, είδαμε πόσο απλό ήταν να εφαρμόσουμε μια ενότητα blog μόνο για ανάγνωση με το Zend Expressive. Μέσα σε λίγα αρχεία και 10 λεπτά εργασίας, η σελίδα της λίστας μπορούσε να εμφανίσει τις αναρτήσεις μας από τη βάση δεδομένων και ήταν έτοιμη για πρόσθετες διαδρομές, όπως / edit και / delete .

Χρησιμοποιείτε το Zend Semalt στα σχέδιά σας; Τι σας αρέσει / δεν σας αρέσει; Ενημέρωσέ μας για το πώς τα πας!

March 1, 2018