سؤال

أنا أستخدم إطار Zend لموقع الويب الخاص بي، وإنشاء فقط وحدة نمطية "API" لإنشاء ... حسنا، API.

الآن، لدي الكثير من وحدات التحكم في الوحدة النمطية الخاصة بي وأرغب في إنشاء دلائل فرعية في دليل وحدات التحكم هذه من أجل "مرتبة". بلدي هيكل الجديد سيكون شيئا مثل هذا:

 - controllers/
 - controllers/contents/[controllers]
 - controllers/users/[controllers]
 - controllers/misc/[controllers]

ومع ذلك، أجد نفسي غير قادر تماما على العثور على نوع من عناوين URL وإعادة توجيهات باستخدام Zend_Controller_Router_Route قد يستطيع تعيينه إلى وحدات التحكم هذه. هل من الممكن القيام بذلك بطريقة أو بأخرى أو يجب أن أعود إلى الهيكل الطبيعي ووضع كل وحدات التحكم الخاصة بي في نفس الدليل؟


حاولت استخدام الفواصل _ كما اقترحها SMACK0007 وكما بدا منطقيا نظرا لكيفية تشير إطار zend عادة إلى الدلائل الفرعية، لكنني حصلت على خطأ.


عدل كل شيء يعمل الآن الآن.

هل كانت مفيدة؟

المحلول

لقد فعلت هذا في المشروع مرة أخرى في الإصدار 1.5 ولكني لا أعرف ما إذا كان سيعمل بعد الآن.

يجب أن تفضل بادئة وحدات التحكم الخاصة بك باستخدام "{folder} _" ثم استخدم الاسم الكامل في عنوان URL.

لذلك في حالتك، سيكون لديك وحدة تحكم اسمه:

contents_FooController

والطريق:

/contents_foo/index

نصائح أخرى

كنت أحاول إنجاز مستويات متعددة على عنوان URL للحصول على طلب قديم وتجنب استخدام الكثير من Roll Roles. لذلك فكرت في تجمع وحدات التحكم في الدلائل الدقيقة وتحديد رول URL لذلك.

للحصول على هيكل

وحدات - - - - - - - - - كونترولرز - Sub - OtherController.php --DefaultController.php

في bootstrap.php من الوحدة التي أضفتها:

public function __construct($application)
    {
        parent::__construct($application);
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->addControllerDirectory(__DIR__ . '/controllers',
            'test');
        $frontController->addControllerDirectory(__DIR__ . '/controllers/sub',
            'test_sub');
    }

DefaultController.php هو

class Test_DefaultController extends Zend_Controller_Action {
     public function subAction()
    {
         $level1 = $this->getRequest()->getParam('level1');
         $level2 = $this->getRequest()->getParam('level2');
         return $this->_forward($level2, $level1, 'test_sub');
    }

لذلك سيقدم هذا إلى وحدة تحكم لدينا في الدليل الفرعي.

أخيرا، أضاف الطريق:

new Zend_Controller_Router_Route_Regex('([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)',
    array(),
    array(1 => 'module', 2 => 'controller', 3 => 'action', 4 => 'level1', 5 => 'level2'),
    '%s/%s/%s/%s/%s'
)

الآن مع اختبار الطلب / الافتراضي / الفرعي / الآخر / فهرس، يمكنك استدعاء الفهر في OtherController.php

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top