سؤال

أريد استدعاء إجراء ملف وحدة التحكم من ملف .ctp في CakePhP. هل هو ممكن؟ نعم ، كيف؟ الرجاء المساعدة. على سبيل المثال لدي إجراء في وحدة التحكم. users_controller.php

<?php
class UsersController extends AppController {

    function get_category() {
        ....
    }

}
?>

أريد أن أسميها من ملف /question/index.ctp.

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

المحلول

الطريقة الصحيحة للقيام بذلك هي:

$this->requestAction(array('controller' => 'users', 'action' => 'get_category'));

إنشاء عنوان URL the CakePHP way سيزيد الأداء (لن يضطر إلى استخدام جهاز التوجيه). ستعمل دائمًا ، أثناء القيام بذلك مثل: "المستخدمين/get_category" قد يتسبب في بعض المتاعب عندما لا تكون في صفحة الفهرس.

يجب استخدامه فقط في عناصر (مع ذاكرة التخزين المؤقت خاصة) ، إذا كانت الحالة مختلفة - Reefer إلى ماذا Travis Leleu كتب في تعليقه.

نصائح أخرى

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

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

function my_action() {
   ...
   $this->set('category', $this->getCategory());
}

يمكنك تسميته مثل $ this-> requestAction ('controller' => 'المستخدمين' ، 'الإجراء' => 'get_category')

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