路由在Zend框架的国家,省,市,产品

此URL结构提出了SEO优化。 所以,这表明其它结构将无法工作。 拟议的结构是

example.com/<language>/<country>/<province>/<city>/<product>

example.com/en/spain我想指出CountryController indexAction ,因为鉴于每个人是不同的,有时觉得有布局变化也。

显示在有关该国西班牙的英语语言的内容。 而对于要求example.com/en/india应该表现出对印度英语语言example.com/es/spain应显示为国家西班牙西班牙页面。

example.com/en/spain/barcelona指向CountryController provinceAction

西班牙的英语语言巴塞罗那省的内容页面。

example.com/en/spain/barcelona/barcelona指向CountryController cityAction

对于巴塞罗那城市在英语国家西班牙巴塞罗那省的内容页。

example.com/en/spain/barcelona/barcelona/taxis指向CountryController productAction

在巴塞罗那的城市,在英语国家西班牙巴塞罗那省的产品内容页面。

是的,我们可以添加像路由

$router = $ctrl->getRouter(); $router->addRoute( 'country_spain', new Zend_Controller_Router_Route('spain', array('controller' => 'country', 'action' => 'index')) );

但是,在这种情况下,我们需要国家的整个列表添加到路由。 即印度,中国,巴基斯坦,UnitedStates的等。

然后,将增加country_province

$router = $ctrl->getRouter(); $router->addRoute( 'country_spain_barcelona', new Zend_Controller_Router_Route('spain', array('controller' => 'country', 'action' => 'province')) );

因此,如果我们有50个省份将是可怕的加国乘以省份的国家数的计数,并转移到城市和产品时,这将成为多条航线。

你可能会说添加类似

$router = $ctrl->getRouter(); $router->addRoute( 'country', new Zend_Controller_Router_Route('country/:country/:province/:city/:product', array('controller' => 'country', 'action' => 'index')) );

但在这种情况下,它就像我们将指向相同的动作,但作为请求的看法改变,这将成为一个胖控制器。

与Zend_Controller_Router_Route_Regex的问题是,我们应该有这样的事情example.com/en/country/spain/barcelona/barcelona/taxis ,也是所有移动到一个单一的动作。 由于看法是完全不同的,它变脏。 可能类似于谐音我可以使用。 但我不知道是否有问题要解决这个另一种很好的解决方案。 这是一个旧的项目,所以我有它的局限性和#ZF版本是1.6。

有类似的一个例子东西

http://www.travelportal.info/ http://www.travelportal.info/asia http://www.travelportal.info/asia/india http://www.travelportal.info/asia/india/business-货币经济

你怎么认为,他们这样做,他们将有添加的路由ATLEAST为亚洲,​​欧洲这样呢?

我能够使它像工作

example.com/en/spain指着CountryController indexAction

example.com/en/spain/barcelona指着CountryController provinceAction

example.com/en/spain/barcelona/barcelona指着CountryController cityAction

example.com/en/spain/barcelona/barcelona/taxis指着CountryController productAction

但是,我需要添加4路,这将变得难以手动添加这样的路线。

建议和批评,欢迎使它更好。

--------------解决方案-------------

好像你想为您的每一个示例场景,例如单独的路线:

$router->addRoute(
'product',
new Zend_Controller_Router_Route(':lang/:country/:province/:city/:product', array(
'controller' => 'country',
'action' => 'product'
))
);

$router->addRoute(
'city',
new Zend_Controller_Router_Route(':lang/:country/:province/:city', array(
'controller' => 'country',
'action' => 'city'
))
);

$router->addRoute(
'province',
new Zend_Controller_Router_Route(':lang/:country/:province', array(
'controller' => 'country',
'action' => 'province'
))
);

$router->addRoute(
'country',
new Zend_Controller_Router_Route(':lang/:country', array(
'controller' => 'country',
'action' => 'index'
))
);

分类:Zend框架 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.479 (s). 10 q(s)