سؤال

لدي طريقة في وحدة تحكم المستخدمين على غرار:

function members($type = null, $category = null) { ... }

كلا المعلمين اختياري ويمكن استخدامه معًا أو بمفردهما.

لذلك مع الطريق التالي.

Router::connect('/members/*', array('controller' => 'users', 'action' => 'members'));

http://example.com/users/members يصبح بنجاح http://example.com/members.

للأسف ما يلي لا يعمل

http://example.com/members/type:cat
http://example.com/members/category:dog
http://example.com/members/type:cat/category:dog

كيف يمكنني إعداد طرقاتي حتى تعمل جميعًا بشكل صحيح؟

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

المحلول

المعلمات المسماة ليست Automagicaly تم تعيينها على الإجراء. يمكنك إما الحصول عليها عن طريق الاتصال

$ this-> passedargs ['type'] أو $ this-> passedargs ['category'

أو باستخدام المعلمة الثالثة في جهاز التوجيه :: الاتصال:

Router::connect(
    '/members/*',
    array('controller' => 'users', 'action' => 'members'),
    array(
        'pass' => array('type', 'category')
    )
);

http://book.cakephp.org/view/46/routes-configuration

نصائح أخرى

محاولة مع

Router::connect('/members/type\:(.*)', array('controller' => 'users', 'action' => 'members_type'));
Router::connect('/members/category\:(.*)', array('controller' => 'users', 'action' => 'members_category'));
Router::connect('/members/type\:(.*)/category:(.*)', array('controller' => 'users', 'action' => 'members_type'));

لاحظ أنني لم أختبرها ، لكنني أعتقد أنه يجب عليك الهروب من القولون.

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