سؤال

لديّ وحدة "مسؤول" وأريد أن تخدم "وحدات تحكم ديناميكية" ، أي لتوفير سلوك افتراضي لوحدات التحكم التي لا توجد بالفعل ("وحدات تحكم افتراضية").

لقد اخترعت آلية مراسلة خفيفة الوزن للتواصل السائب بين الوحدات النمطية. أرغب في استخدامه عندما على سبيل المثال

?r=admin/users/index

مطلوب ، سوف يطلق على "وحدة التحكم الافتراضية" "UserController" من AdminModule ، والتي ستستخدم ، افتراضيًا ، آلية المراسلة هذه لإخطار الوحدة النمطية الحقيقية "UserSmodule" يمكنه الإجابة على الطلب.

فكرت في محاكاة هذا السلوك في AdminModule :: init () ، لكن في هذه المرحلة ، ليس لدي أي طريقة لتحديد ما إذا كان يمكن معالجة الإجراء بواسطة وحدة تحكم حقيقية أم لا ، أو على الأقل لا أعرف كيفية القيام بذلك.

هذا بسبب الطريقة التي يعمل بها Yii: من أسفل إلى أعلى ، وحدة التحكم هي التي تجعل العرض وتخطيط التطبيق (أو الوحدة النمطية ، إذا كانت موجودة) ، على سبيل المثال. لا أعتقد أن الوحدة النمطية لديها حتى كلمة لتقولها حول التعامل مع وحدة تحكم معينة+أو لا.

للتلخيص ، أنا أبحث عن نوع من cwebmodule :: missectontroller ($ controlerId ، $ actionId) ، تمامًا مثل ccontroller :: missing action ($ actionId) ، أو حل محله لمحاكاة ذلك.

قد يكون ذلك في cwebmodule :: init () أو في مكان يمكنني فيه معرفة ذلك

  1. ما إذا كانت وحدة التحكم موجودة فعليًا ، وفي هذه الحالة يكون من وظيفته التعامل معها
  2. $ actionID و $ controlerId
  3. ما إذا كانت وحدة التحكم في الوحدة النمطية $ موجودة (لم أكتبها بشكل خاطئ ، في r = admin/user/index ، "المستخدمون" هي الوحدة النمطية الفعلية ، كما هو محدد في تكوين التطبيق).
هل كانت مفيدة؟
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top