باستخدام ZenD_Controller_Router_Router_Route لإنشاء عناوين URL ودية للإجراءات في IndexController

StackOverflow https://stackoverflow.com/questions/2410964

سؤال

في 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',
  ))
);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top