通過controller進行url重寫

來源:互聯網
上載者:User

改功能是將http://www.sample.com/tag/product/list/tagId/2,重寫成http://www.sample.com/tag/2!

1

通過controller,具體詳細原理我也說不清楚,大致是通過抓取一個事件來進行的!!

這個事件就是controller_front_init_routers,然後把填寫

 

<events>
            <controller_front_init_routers>
                <observers>
                    <tag>
                        <type>singleton</type>
                        <class>Mage_Tag_Controller_Router</class>
                        <method>initControllerRouters</method>
                    </tag>
                </observers>
            </controller_front_init_routers>
        </events>

 

2

寫Controller,譬如:

class Mage_Tag_Controller_Router extends Mage_Core_Controller_Varien_Router_Abstract
{
    public function initControllerRouters($observer)
    {
        $front = $observer->getEvent()->getFront();

        $tag = new Mage_Tag_Controller_Router();
        $front->addRouter('tag', $tag);
    }

    public function match(Zend_Controller_Request_Http $request)
    {
   

            $pageId = $request->getPathInfo();
             Mage::register('paramsttt', $pageId);
            $request->setModuleName('tag')
                ->setControllerName('product')
                ->setActionName('list');
                return true;
       
       
       
    }
}

如果執行url:/tag/tagid,就會執行這個controller,然後將paramsttt賦值於/tag/tagid,

然後呢,在執行/tag/product/list這個url(相當於),然後再這個controllers接受這個參數

$paramas = Mage::registry('paramsttt');

然後通過字串函數

$ss = explode('/', $paramas);
      
        $tagName =$ss['2'];

就可以得到tagid這個字串,然後執行到的controller和得到的參數都有了,從而實現了重寫!!!

 

3.在指向原來url需要改變成上面的修改完畢的url,也就是重寫後的url,然後點擊後,就通過上面的方式執行了!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.