Bir yönlendirici bir anahtar için dinamik bir varsayılan belirtmek nasıl, Zend Framework

2 Cevap php

Bu soru, this one ile bağlantılıdır

Nasıl kategori bölümünün varsayılan isteği url kategori değer olarak ayarlayabilirsiniz?

$Router=$this->_front->getRouter();
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*',
           array(
                 'controller' => 'index',
                 'action'     => 'index',
                 'category'   => 'aaa'
           ));
$Router->addRoute('category', $CategoryRoute);

Diğer bir deyişle, ben [aaa] Bu rotayı inşa ediyorum zaman Kategorideki değer olarak değer gerekir. Her zaman aksi takdirde varsayılan yol kullanmak gibi [kategori] için bir değer olacaktır.

Example of what I mean:
If I surf to the site with url http://baseurl/category/mycat/index
I will be routed to controller=index, action=index, category=mycat.
But, in all my view files, where I use the Zend_View::url() helper, the links will point to:
http://baseurl/category/aaa/somthing/somthing (Using the exact route from above)
While I actually need them to point to:
http://baseurl/category/mycat/somthing/somthing

This happens because the default value for category is written as a constant in the route, and not taken, somehow, from the current URL.
I currently solve this by extracting by myself the category from the URL and making it the default.

2 Cevap

Mesajın bir soru var mı? :)

Yousetup varsayılan category ve çağrı eğer kullanılacak - Sana doğru var IF

$this->url(array(),'category');

Ama kullandığınızda

$this->url(array('category'=>'my-category'),'category');

Bu category/aaa/index/index geri category/my-category/index/idnex yerine doyurmaya

Eğer kullanın

$this->url(array(), 'category');

çalışması gerekir.

Sürece varsayılan değerlere sadık olarak, her zaman basit bir / kategori bağlantısını alacak, ancak farklı parametreleri kullanarak zaman geçerli URI dayalı doğru adapte URL dönmelidir: Ama unutmayın.

yani. URI / kategori / aaa / index / index sonra $ this-> url (array (), 'kategori') ise; / kategori dönecektir URI / kategori / xxx / index / index sonra $ this-> url (array (), 'kategori') ise; / kategori / xxx dönmek URI ise / kategori / xxx / index / süreç, daha sonra $ this-> url (array (), 'kategori') olacak; dönecektir / kategori / xxx / index / süreç, vb