Zend-πλαίσιο Per-Ενότητα με βάση τις ρυθμίσεις

Με Steven Lloyd Watkin , Παρασκευή 1 Ιανουαρίου 2010 22:40

Έχω δημιουργήσει ένα σε αυτή τη θέση η οποία απαιτεί λιγότερη ρύθμιση, ανατρέξτε στην Ενότητα Βασισμένο Διάταξη - Zend-πλαίσιο .

Όταν χρησιμοποιείτε το Zend-πλαίσιο με τις ενότητες, προφανές, ότι αν τρέχετε διαφόρων (υπο-) περιοχές από την ίδια αίτηση δεν θέλετε αναγκαστικά το ίδιο σενάρια διάταξη για κάθε τμήμα. Αποφάσισα να πάω με την ακόλουθη δομή της ιστοσελίδας:

  / Εφαρμογή
     / Ελεγκτές
         ...
     / Μοντέλα
     / Modules
         / Default
             / Ελεγκτές
             / Layout
                 / Σενάρια
             / Απόψεις
                 / Σενάρια
         / AnotherModule
             ...
     / Σενάρια

Το πρόβλημα ήταν για τη σύσταση της διάταξης σενάρια για μια ανά μονάδα βάσης. Η απάντηση ήρθε μέσα από τη χρήση Δράσης Helper. Ρύθμιση του σχεδιαγράμματα σε ένα ανά μονάδα βάσης περιλαμβάνει τρία βήματα:

  1. Application.ini (ή παρόμοια εγκατάσταση διαμόρφωση):
     admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouts / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / μέλη / layouts / scripts "affiliate.resources.layout.layoutPath = APPLICATION_PATH" / modules / θυγατρικών / layouts / scripts " 
  2. Δημιουργήστε Δράση Helper σας:
      <? Php
     / **
      * Ορίζει τη διαδρομή διάταξης σε μια ανά μονάδα βάσης
      *
      * @ Συγγραφέας Λόιντ Watkin <lloyd@evilprofessor.co.uk>
      * @ Δεδομένου 01/01/2010
      * /
     τάξη Pro_Controller_Action_Helper_SetLayoutPath
         επεκτείνει Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Διαδρομή διάταξης Σετ που βασίζονται στην ενότητα
          * /
         δημόσια preDispatch λειτουργία ()
         {
        	 $ Ενότητα = $ this-> getRequest () -> getModuleName ()?
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg («εκκίνησης»)) {
    
    	         $ Config = $ bootstrap-> getOptions ()?
    
    	         αν (isset ($ config ['layout'] [$ ενότητας] ['πόρων'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ ενότητα] ['layout'] ['πόρων'] ['layoutPath']?
    	             $ This-> getActionController ()
    	                  -> GetHelper («διάταξη»)
    	                  - SetLayoutPath> ($ layoutPath)?
    	         }
        	 }
         }
     } 
  3. Και boostrap τέλος, η βοηθός δράσης:
      ...
         / **
          * Διαμορφώνει σενάρια διάταξης στην ανά μονάδα βάσης
          * /
         προστατεύονται _initLayoutHelper λειτουργία ()
    	 {
    	     $ This-> bootstrap («frontController ')?
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         νέα Pro_Controller_Action_Helper_SetLayoutPath ())?
    	 }
     ... 

4 Απαντήσεις σε "Zend-πλαίσιο Per-Ενότητα με βάση τις ρυθμίσεις"

  1. Behrang λέει:

    Γεια σας ευχαριστώ για την πρώτη σας βοηθήσει φροντιστήριο, αλλά να μου πείτε πού μπορώ να δημιουργήσω βοηθός δράση με το όνομα του αρχείου μάγισσα;
    behrang

  2. Γεια σου Behrang, να δημιουργήσει ο βοηθός δράσης με όποιο όνομα θέλετε, έχω τη δική «βιβλιοθήκη» μου με το χώρο ονομάτων «Pro». Θα μπορούσατε ακριβώς όπως καλέσετε εύκολα «SetLayoutPath» την τάξη και το βάζουμε όπου κι αν θέλετε, υπό την προϋπόθεση ο κώδικας μπορεί να το βρει και να επεκτείνετε τις απαιτούμενες τάξεις

  3. Kanth Shashi λέει:

    Γεια σου, IAM συγχέεται με τη δημιουργία μονάδας ειδικές ρυθμίσεις της βάσης δεδομένων ... Έχει κανείς μια ιδέα;

  4. Νομίζω ότι αυτό θα μπορούσε εύκολα να επιτευχθεί usign παραπάνω μοτίβο. Πρώτον, να δημιουργήσει τις επιλογές στο αρχείο ini σας κατά μήκος των αρχείων:

    moduleName.db.user = "
    moduleName.db.password = "
    moduleName2.db.user = "
    ... Κλπ ...

    Στη συνέχεια, δημιουργούν απλώς σύνδεσης της βάσης δεδομένων σας όπως σας βολεύει (Zend_Db:: Εργοστάσιο () ή κάτι παρόμοιο) και stash μακριά στο μητρώο ή να ορίσετε ως προεπιλεγμένο τον προσαρμογέα όταν χρησιμοποιείτε Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

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













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

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