Zend çerçevesinde (http://facebook.com/JohnDoe gibi) vanity adresler uygulama?

2 Cevap php

Default / modül / denetleyicisi / eylem / değer yönlendirme yapısını korurken, rotayı "catch all" bir makyaj url oluşturmak için yine de var mı?

Teşekkürler!

2 Cevap

Bir ön kontrolör eklentisi PreDispatch () kanca kullanabilirsiniz. Şöyle:

Lütfen bootstrap yılında

<?php
...
$frontController = Zend_Controller_Front::getInstance();
// Set our Front Controller Plugin
$frontController->registerPlugin(new Mystuff_Frontplugin());

?>

Sonra mystuff / Frontplugin.php içeride

<?php

class Mystuff_Frontplugin extends Zend_Controller_Plugin_Abstract
{
    ....

    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        ....

        $controllerFile = $this->_GetRequestedControllerFile();

        if (!is_file($controllerFile)) {
            // Controller does not exist
            // re-route to another location
            $request->setModuleName('customHandler');
            $request->setControllerName('index'); 
            $request->setActionName('index');

        }
    }

    ....
}

Ayrıca preDispatch () uygulama geniş kimlik doğrulama işlemek için kullanışlı bir yerdir.

Bu daha iyi sizin bootstrap size kurulum örneğin, özel bir yol, eğer:

protected function _initRoutes() {
     $this->bootstrap('frontController');
     $front = $this->getResource('frontController');
     $router = $front->getRouter();

     $router->addRoute(
         'neat_url',
         new Zend_Controller_Router_Route(
              'profile/:username',
              array(
                   'controller' => 'profiles',
                   'action' => 'view_profile'
              )
         )
     );
}

Bu şekilde hala varsayılan yol var ve $ this-> _getParam ('username') kullanarak parametreyi elde controller sonra altında / profil / jhon.doe altında her şeyi yönlendirir özel bir yol olabilir;