تمديد وحدة تحكم القالب في كوهانا
-
19-09-2019 - |
سؤال
أواجه القليل من الارتباك في محاولة لأعمادة إنشاء وحدة تحكم قاعدة جديدة لمشروعي. إذا لم أكن مخطئا، فإن كل ما أحتاج إلى القيام به هو إنشاء ملف في application/libraries
اتصل MY_baseController.php
تحتوي على ما يلي:
class baseController extends Template_Controller
{
public function __construct()
{
parent::__construct();
}
}
ثم أعد كتابة وحدات التحكم الأخرى الخاصة بي إلى تمديد baseController
بدلاً من Template_Controller
:
class Frontpage_Controller extends Template_Controller
ل
class Frontpage_Controller extends baseController
بعد عندما أفعل هذا، الوصول إلى Frontpage_Controller
ينبهني ذلك:
فئة 'basecontroller' غير موجود ...
ما أنا في عداد المفقودين هنا؟
المحلول
بعد بعض الاصطد، أعتقد أن ما يلي هو الحل الخاص بي ...
نقل MY_baseController.php
من عند application/libraries
و الى application/controllers
. وبعد إعادة تسميته إلى base.php
وتغيير السطر التالي:
class baseController extends Template_Controller
داخل
class Base_Controller extends Template_Controller
الآن ضمن وحدة تحكم FrontPage الخاصة بك، تمتد Base_Controller
بدلاً من baseController
.
نصائح أخرى
تأكد من اتباع اتفاقيات Kohana للتأكد من أن كل شيء أحمال تلقائي بشكل صحيح! هناك منها مشابه فيما يتعلق بالمساعدين النماذج والمكتبات.
أيضا إذا كنت ترغب في الاحتفاظ بمجلد تحكم التطبيق الرئيسي الخاص بك نظيفا، أود أن أقترح إنشاء وحدة Kohana فقط لتطبيقك ووضع جميع وحدات التحكم في امتداد القالب ومتنوعة الاحتفاظ بها لإبقائها منفصلة عن وحدات التحكم الرئيسية الخاصة بك.
فقط لا تنسى إضافة الوحدة إلى ملف التكوين الخاص بك!
أعلم أن هذا سؤال قديم، لكنني اعتقدت أنني سأضع كلمة. تحتاج فقط إلى إزالة بادئة My_ من اسم الملف كما تحتاج فقط إلى ذلك حقا عند تمديد فئة فاتنة مع _Core في مجلد النظام. على سبيل المثال، الملف ل
class Controller extends Controller_Core
سيتم تسمية my_controller.php.
في هذه الحالة، فقط تسمية الملف BaseController.php ووضعه في مجلد المكتبات سيعمل.
لا جريمة، لكن اضطررت إلى الانفجار رأسي على جهاز الكمبيوتر الخاص بي للحصول على العمل مع Kohana 3.1. أحضرت أخيرا أن بناء الجملة لتمديد وحدة تحكم القالب يجب أن يكون:
class Controller_Base extends Controller_Template