زند لكل وحدة تستند الإعدادات إطار العمل

من جانب ستيفن لويد Watkin ، الجمعة 1 يناير 2010 22:40

لقد خلق متابعة لهذا المنصب الذي يتطلب أقل التكوين ، يرجى الاطلاع على وحدة تخطيط وبناء -- إطار زند .

عند استخدام الإطار زند مع وحدات ، من الواضح أن إذا كنت تقوم بتشغيل مختلف (الفرعية) مواقع قبالة نفس التطبيق كنت لا تريد بالضرورة نفس تخطيط البرامج النصية لكل جزء. قررت أن أذهب مع بنية الموقع التالي :

  / التطبيق
     / وحدات تحكم
         ...
     / النماذج
     / وحدات
         / الافتراضي
             / وحدات تحكم
             / تخطيط
                 / مخطوطات
             / وجهات النظر
                 / مخطوطات
         / anotherModule
             ...
     / مخطوطات

وكانت المشكلة إعداد تخطيط البرامج النصية على أساس لكل وحدة. وجاء الجواب من خلال استخدام مساعد العمل. إنشاء تخطيطات على أساس لكل وحدة تتضمن ثلاث خطوات :

  1. Application.ini (أو ما شابه ذلك إعداد التكوين) :
      admin.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / المشرف / تخطيطات / مخطوطات"
     default.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / الافتراضي / تخطيطات / مخطوطات"
     member.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / عضو / تخطيطات / مخطوطات"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / التابعة / تخطيطات / مخطوطات" 
  2. خلق لكم عمل مساعد :
      <؟ فب
     / **
      * يضبط مسار التخطيط على أساس لكل وحدة
      *
      @ * كاتب لويد Watkin <lloyd@evilprofessor.co.uk>
      * @ منذ 2010/01/01
      * /
     فئة Pro_Controller_Action_Helper_SetLayoutPath
         يمتد Zend_Controller_Action_Helper_Abstract
     {
         / **
          * مسار تخطيط مجموعات على أساس وحدة
          * /
         preDispatch العامة الدالة ()
         {
        	 $ وحدة = getRequest دولار هذا -> () --> getModuleName () ؛
    
    	     إذا دولار (التمهيد = دولار هذا getActionController -> ()
    	                        --> getInvokeArg ('التمهيد')) {
    
    	         = $ $ التكوين getOptions التمهيد -> () ؛
    
    	         إذا كان (isset ($ التكوين ['تخطيط'] [$ وحدة] ['موارد'] ['layoutPath'])) {
    	             $ layoutPath =
    	                  $ التكوين [$ وحدة] ['تصميم'] ['موارد'] ['layoutPath'] ؛
    	             دولار هذا> - getActionController ()
    	                  --> getHelper ('تصميم')
    	                  -- setLayoutPath> ($ layoutPath) ؛
    	         }
        	 }
         }
     } 
  3. وأخيرا boostrap المساعد العمل :
      ...
         / **
          * من يقوم بإعداد البرامج النصية التخطيط على أساس لكل وحدة
          * /
         _initLayoutHelper المحمية وظيفة ()
    	 {
    	     دولار هذا> - التمهيد ('frontController') ؛
    	     $ = تخطيط Zend_Controller_Action_HelperBroker : addHelper (
    	         جديد Pro_Controller_Action_Helper_SetLayoutPath ()) ؛
    	 }
     ... 

4 الردود على "ضبط زند إطار يستند لكل وحدة"

  1. Behrang يقول :

    مرحبا شكرا لجهودكم أول مفيدة تعليمي ولكن قل لي أين يمكنني إنشاء المساعد عمل مع اسم ملف ساحرة؟
    behrang

  2. مرحبا Behrang ، وخلق المساعد عمل مع أي اسم تريد ، لقد بلدي 'المكتبة' مع 'المؤيد' مساحة الاسم. هل يمكن بسهولة مثلما استدعاء 'SetLayoutPath' الفئة ووضعها أي وقت مضى حيث تريد ، وينص القانون يمكن ان تجد وأنت تمديد الفئات المطلوبة

  3. kanth شاشي يقول :

    مرحبا.. إني الخلط بينه وبين إنشاء وحدة إعدادات قاعدة بيانات محددة... هل لديك فكرة؟

  4. وأعتقد أن هذا يمكن أن يتحقق بسهولة usign نمط أعلاه. أولا ، خلق الخيارات في الملف & الخاص على طول ملفات :

    moduleName.db.user = "
    moduleName.db.password = "
    moduleName2.db.user = "
    ... الخ...

    ثم تولد ببساطة اتصال قاعدة البيانات الخاصة بك النحو الذي تراه مناسبا (Zend_Db : : مصنع () أو ما شابه ذلك) ، وخبأ بعيدا في التسجيل أو تعيينها كما المحول الافتراضي إذا به Zend_Db_Table (Zend_Db_Table : setDefaultAdapter ()).

ترك الرد













بانوراما الموضوع من قبل فرش سيارات

7 عدد زوار الموقع الآن
6 الضيوف ، والسير 1 ، 0 الأعضاء
ماكس الزوار اليوم : 23 في 04:19 بالتوقيت العالمي
هذا الشهر : 26 في 2011/7/5 12:35 بالتوقيت العالمي
هذا العام : 130 في 28-03-2011 10:40 مساء بالتوقيت العالمي
كل الوقت : 130 في 28-03-2011 10:40 مساء بالتوقيت العالمي