PHP利用GETURL排序,php-getUrlRules-切换至控制器

我有一个SearchModule.php具有以下内容:

class SearchModule extends CWebModule

{

// function init() { }

/**

* @return array Правила роутинга для текущего модуля

*/

function getUrlRules()

{

$customController = (Yii::app()->theme->getName() == 'test' ? 'Test' : '') . '';

return array(

$this->id.'///' => $this->id.'/' . $customController . '/',

$this->id.'' => $this->id.'/' . $customController . '/',

$this->id.'/visas' => $this->id.'/visas/fullVisasInfo',

);

}

}

我要弄清楚的是,如果“主题”设置为“测试”,如何使用另一个控制器.现在,它具有名为HotelsController或LocationsController的搜索控制器.我想要达到的目的是,如果主题的名称设置为“ test”,它应该将所有请求从SAME URL路由到TestHotelsController或TestLocationsController(/ search / hotels应该路由到TestHotelsController而不是HotelsController).

我尝试通过将“ Test”添加到路由表的第二部分来尝试执行此操作,但这似乎无济于事.

解决方法:

您不要将关键字< controller>组合在一起.任何类型的控制器名称.您可以为它指定一个自定义的唯一控制器名称,也可以为它< controller>关键字以读取给定的控制器.而且您的控制器名称不是TestController,而是TestHotelsController,因此,请尝试按以下方式更改代码:

function getUrlRules()

{

$customController = (Yii::app()->theme->getName() == 'test' ? 'hotelsTest' : 'hotels');

if(strpos(Yii::app()->urlManager->parseUrl(Yii::app()->request), 'hotel')) {

$rules = array(

$this->id . '///' => $this->id . '/' . $customController . '/',

$this->id . '' => $this->id . '/' . $customController . '/',

$this->id . '/visas' => $this->id . '/visas/fullVisasInfo',

);

}

else {

$rules = array(

$this->id.'///' => $this->id.'//',

$this->id.'' => $this->id.'//',

$this->id.'/visas' => $this->id.'/visas/fullVisasInfo',

);

}

return $rules;

}

标签:url-routing,yii1-x,php

来源: https://codeday.me/bug/20191026/1936728.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值