قلب الـ RewriteRouter هو إنشاء معرفات تحويل "routes" من قِبل المستخدم, يتم إنشاء الـ routes عن طريق إستدعاء الـ method المسمى addRoute الخاص بـ RewriteRouter :
$router->addRoute('user', 'user/:username');
البراميتر الأول هو إسم الـ route , فى وقت كتابة هذه الكلمات لا يوجد إستخدام لهذا الأسم , و لكن فى المستقبل سيتم إستخدامه فى اداة "URL view helper" مساعدة لإنشاء URLs بسهولة فى الـ view . إن كنت تحتاج إلى إستخدام routes قد قمت بتسجيلها مسبقاً, يمكنك إستعادتها عن طريق الـ method المسمى getRoute الموجود فى RewriteRouter.
البراميتر الثانى عبارة عن route "معرف تحويل" و الذى سيتم مطابقته بالـ URL - على سبيل المثال,
الـ route المذكور بالأعلى سيتوافق مع http://example.com/user/martel
.
النقطة المزدوجة ":" فى الـ route توضح ان هذا متغير URL و الذى يمكن الوصول إليه من خلال الـ method المسمى
Zend_Controller_Action::_getParam .
فى مثالنا هذا , باراميتر يأسم username سيتم إنشائه بالقيمة 'martel'.
![]() |
ملاحظة |
---|---|
يتم تنفيذ عملية اختبار المطابقة للـ routes بترتيب عكسى , لذلك تأكد من أن الـ routes الأكثر عمومية (فرصة مطابقتها اكبر) تم تعريفها اولاً. |
![]() |
ملاحظة |
---|---|
فى الوقت الحالى , مسموح إستخدام أى حروف ما عدا (/) فى أسماء البراميترات, لكن ينصح بشدة أن تستخدم الحروف المسموح إستخدامها فى اسماء متغيرات PHP العادية, لأنه ربما تحدث تغييرات فى المستقبل فى طريقة العمل و بالتالى سيترتب هذا على اخطاء فى الكود الخاص بك. |
هناك اثنان من المتغيرات الخاصة التى يمكنك إستخدامها فى الـ routes خاصتك - 'controller' و 'action', هذه المتغيرات الخاصة ستستخدم لإيجاد controller و/ أو action يتم تحديده فى الـ URL. المتغير الخاص 'action' يجب ان يتم تحديد قيمته سواء فى الـ route او كقيمة أساسية لبراميتر, و المتغير الخاص 'controller' إن لم يتم تعريفه مسبقا فسيتم اعتبار قيمته هى 'IndexController'.
$router->addRoute('user', ':controller/:action');
إن قمت بتجربة الوصول الى 'http://example.com/news/latest' من خلال متصفحك , فسيقوم Zend_Controller_Dispatcher بإستدعاء latestAction من الـ NewsController خاصتك.