Δυναμικά προσθέτουν σελίδες σε εμπορευματοκιβώτιο Zend_Navigation κατά το χρόνο εκτέλεσης

Με Steven Lloyd Watkin , Πέμπτη 7 Ιανουαρίου 2010 22:50

Σε μια συνέχεια στην θέση μου για το τελευταίο Zend_Navigation, Route αιτήσεις sitemap.xml με το έθιμο υπεύθυνο / δράσης , αυτή η θέση είναι σχετικά με την προσθήκη dymnamically σελίδες σε ένα δοχείο Zend_Navigation κατά το χρόνο εκτέλεσης / εκτέλεση του κώδικα.

Του όλα ωραία και καλά προσδιορίζοντας τις σελίδες σας σε ένα ini ή xml αρχείο αλλά κάποια στιγμή θα πάμε να έχει μεταβαλλόμενο σελίδες στην τοποθεσία σας που θέλετε ως μέρος ενός μενού, sitemap, ή να περιληφθούν στο μονοπάτι σας τριμμένη φρυγανιά. Ως εκ τούτου αυτό που χρειάζεται να κάνετε είναι να προσθέσετε τις σελίδες στο δοχείο Zend_Navigation μας κατά την εκτέλεση. Παραδείγματα για αυτό θα ήταν στην προσθήκη ειδήσεων, blog θέσεις, ή μια σελίδα σχόλια, κλπ.

Σε αυτό το παράδειγμα Πάω να προσθέσετε κάποια θέσεις ειδήσεων για στατικά ορίζονται ini config μου. Για να λάβετε νέα συνθέσεις μου σελίδα μετά το έχω χρησιμοποιήσει μια κατηγορία η οποία επιστρέφει έναν πίνακα με την ακόλουθη μορφή:

 $ PagesToAdd = array (0 => array ('σήμανση «Fake είδηση ​​# 5 ...',' => ενότητα '=>' www ',' διαδρομή '=>' www-δείκτη», «δράση» = «άποψη»>, «υπεύθυνος» news »=> 'params' => array ('id' =>« 5-Fake-νέα-ιστορία - 5 ')), 1 => array (/ * Περισσότερες σελίδα Λεπτομέρειες * /),)? 

Όπως θα παρατηρήσετε ότι η λειτουργία έχει επιστρέψει μια σειρά στην οποία περιέχονται πίνακες που συνθέτουν το config συστοιχίες για Zend_Navigation_Page_Mvc. Ως εκ τούτου, από looping πάνω από τον πίνακα νέες σελίδες Zend_Navigation μπορούν να δημιουργηθούν από το config πίνακα. Το επόμενο πράγμα που κάνει ως μέρος του βρόχου είναι να προσθέσετε τις σελίδες στη σωστή θέση (εναλλακτικά σελίδες μπορούν να προστεθούν σε μεγάλες ποσότητες με τη χρήση -> addPages () μέθοδο).

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

  («Τελευταία Νέα», «σήμα») $ εμπορευματοκιβώτιο-> findOneBy -> addPage ($ σελίδα)? 

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

  / **
      * Χρησιμοποιούνται για τον χειρισμό ανώτατου επιπέδου πλοήγησης
      *
      * Zend_Navigation επιστροφής @
      * /
     προστατεύονται _initNavigation λειτουργία ()
     {
         $ This-> bootstrap ("layout")?
         $ Layout = $ this-> getResource ("layout")?
         $ Άποψη = $ layout-> getView ()?
         $ Config = νέα Zend_Config_Ini (
             APPLICATION_PATH.  »/ Configs / navigation.ini», APPLICATION_ENV)?

         $ Δοχείο = νέα Zend_Navigation ($ config-> προεπιλογή)?
         / / Τώρα προσθέστε τα τελευταία 25 δελτία ειδήσεων
         $ News = νέα Ειδήσεις ()?
         $ Σελίδες = $ ειδήσεις-> getNavigationEntries ()?
         foreach ($ σελίδες όπως $ σελίδα) {
        	 $ Page = νέα Zend_Navigation_Page_Mvc ($ σελίδα)?
        	 («Τελευταία Νέα», «σήμα») $ εμπορευματοκιβώτιο-> findOneBy -> addPage ($ σελίδα)?
         }
         $ Πλοήγηση view-> ($ εμπορευματοκιβωτίων)?
     } 

Στις πράγμα που πρέπει να προστεθεί είναι κάποια μορφή caching (χρήση Zend_Cache προφανώς?)) αλλιώς αυτό πρόκειται να είναι αρκετά ακριβά σε κάθε φορτίο σελίδα.

Μια απάντηση σε "add Δυναμικά σελίδες στο δοχείο Zend_Navigation κατά το χρόνο εκτέλεσης"

  1. Ο κ. Μαν, λέει:

    Αυτός είναι ακριβώς αυτό που έψαχνα - ευχαριστίες για μια πραγματικά σαφές παράδειγμα. Στην υγειά σου. G

Αφήστε μια απάντηση













Πανόραμα Θέμα από Themocracy

6 επισκέπτες online τώρα
4 επισκέπτες, 2 bots, 0 μέλη
Max επισκέπτες σήμερα: 13 στις 11:17 π.μ. UTC
Αυτό το μήνα: 26 στις 05/07/2011 12:35 π.μ. UTC
Αυτό το έτος: 130 στις 28-03-2011 22:40 UTC
Όλες οι εμφανίσεις: 130 στις 28-03-2011 22:40 UTC