باستخدام ZenD_Controller_Router_Router_Route لإنشاء عناوين URL ودية للإجراءات في IndexController
-
18-09-2019 - |
سؤال
في Indexcontroller الخاص بي، لدي حاليا فهرسة (الصفحة الرئيسية)، والجهاز التنوج معها. أحاول إزالة "/ الفهرس /" من عنوان URL للحصول على domain.com/login بدلا من domain.com/index/login.
ما هي أنظف طريقة لتحقيق ذلك؟ هل هناك ريكيكس يمكننا استخدامها؟ لا أريد أي وقت مضى / فهرس / في عنوان URL.
الحل الحالي، الذي أعتقد أنه يمكن تحسينه، هو أدناه. أيضا، ماذا تفعل المعلمة الأولى في Addroute () القيام به؟
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initViewHelpers()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('login',
new Zend_Controller_Router_Route('login/*', array(
'controller' => 'index',
'action' => 'login'
))
);
$router->addRoute('logout',
new Zend_Controller_Router_Route('logout/*', array(
'controller' => 'index',
'action' => 'logout'
))
);
}
}
المحلول
لا يوجد شيء يستفيد، يجب عليك إنشاء طريق لكل إجراء. سيتيح لك ذلك تغيير الإعدادات الافتراضية للمسار (الوحدة / وحدة التحكم / الإجراءات) دون تعديل التعليمات البرمجية الخاصة بك.
المعلمة الأولى هي اسم الطريق، والتي يجب عليك استخدامها مع مساعد URL () في وجهات نظرك:
<a href="<?php echo $this->url(array(), 'login', true); ?>">Login</a>
تحديث. يمكنك استخدام المسار هذا، إذا كنت تريد مسارا واحدا فقط دون "فهرس" في عنوان URL:
$router->addRoute('default',
new Zend_Controller_Router_Route(':action/*', array(
'controller' => 'index',
))
);