سؤال

توجد في cake 1.2 ميزة تتيح للمطور عدم الحاجة إلى إنشاء نماذج، بل جعل Cake يقوم بعمل المباحث في وقت التشغيل وإنشاء النموذج لك.تحدث هذه العملية في كل مرة وهي نظيفة ولكنها في حالتي خطيرة للغاية.قرأت عن هذا في مكان ما والآن أعاني من الجانب السيئ من هذا.

لقد قمت بإنشاء مكون إضافي يحتوي على كافة الملفات ويبدو أن كل شيء على ما يرام.وذلك حتى حاولت استخدام بعض ارتباطات النموذج ووظائفه.ثم يدعي كيك أن هذا النموذج الذي قمت بإنشائه غير موجود. لقد قمت بتضييق نطاق الأمر إلى الكعكة باستخدام ميزة النموذج التلقائي هذه بدلاً من الرمي والخطأ!لذلك ليس لدي أي فكرة عما هو الخطأ!

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

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

المحلول 2

كعكة 1.2

إنه اختراق وقبيح لأنك تحتاج إلى تعديل ملفات الكعك الأساسية ولكن هذه هي الطريقة التي أفعل بها ذلك:\cake\libs\class_registry.php :السطر 127

if (App::import($type, $plugin . $class)) {
    ${$class} =& new $class($options);
} elseif ($type === 'Model') {
    /* Print out whatever debug info we have then exit */
    pr($objects);
    die("unable to find class $type, $plugin$class");
    /* We don't want to base this on the app model */
    ${$class} =& new AppModel($options);
}

كعكة 2

يوصي كوستا بتغيير $strict إلى true في دالة init في السطر 95 من Cake\Utility\ClassRegistry.php

راجع مستندات Cake Api للتعرف على init

ClassRegistry.php - وظيفة init

نصائح أخرى

هناك دائمًا إمكانية إنشاء ملف النموذج فعليًا وتعيين var $useTable = false.
إذا لم يكن هذا هو ما تطلبه وكان النموذج وارتباطاته موجودة بالفعل، ولكن يبدو أن Cake غير قادر على العثور عليها، فسيتعين عليك التحقق ثلاث مرات من أسماء جميع النماذج وأسماء فئاتها في كل من النموذج الفعلي تعريف النموذج وفي تعريفات الجمعية.

AFAIK لا يمكنك تعطيل النمذجة التلقائية.

يستخدم

var $useTable = false;

في تعريف النموذج الخاص بك.

حذف الكل الملفات المخزنة مؤقتا (جميع الملفات ضمن app/tmp، احتفظ بالمجلدات)

في معظم الحالات التي يبدو فيها أن النماذج تعمل بطرق غير متوقعة، غالبًا لا تتضمن التغييرات التي أجريتها، وذلك لأن تلك الكعكة تستخدم نسخة قديمة مخبأة من النموذج.

اه...من أين نبدأ.أولاً، كما اقترح ألكساندر، قم بمسح ذاكرة التخزين المؤقت لتطبيقك.

إذا كنت لا تزال تحصل على نفس السلوك، فمن المحتمل أن يكون هناك خطأ ما في أسماء الفئات و/أو الملفات.

يتذكر القواعد, ، للتحكم:

* classname: BlastsController
* filename: blasts_controller.php

للنموذج:

* classname: Blast
* filename: blast.php

لا تتهرب من ذلك التعامل مع التصريفات غير النظامية على وجه صحيح.

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