我的admin.php包含以下urlmanager但它不起作用。
'urlManager'=>array(
'showScriptName'=>false,
'urlFormat'=>'path',
'rules'=>require(
dirname(__FILE__).'/../extensions/starship/restfullyii/config/routes.php'
),
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
''=>'Site/Login',
''=>'Browse/Index',
),
),
它在我当地工作,但没有在在线服务器上工作,它只是出现空白页面。当我删除时
'rules'=>require(
dirname(__FILE__).'/../extensions/starship/restfullyii/config/routes.php'
),
它工作得很好,但我需要这个为我的应用程序制作api。有没有想法解决这个问题。
答案 0 :(得分:0)
如果你使用的版本1.0意味着试试这个
在\ protected \ components \
中添加一个新类class URLManager extends CApplicationComponent{
public $urlRulesPath;
public function init()
{
Yii::app()->urlManager->rules = include($this->urlRulesPath . 'url_to_rules_array.php');
Yii::app()->urlManager->init();
}
}
然后在config\main.php
组件索引中再添加一个数组(customurlmanager),如下所示,其中类索引包含组件目录中存在的URLManager
类,urlRulesPath
是属性,传递给该类,该类包含规则数组的链接。
'components' => array(
'customurlmanager' => array(
'class' => 'URLManager',
'urlRulesPath' => dirname(dirname(dirname(__FILE__))) . '/dynamicurl/'
),
...
然后preload
中的config\main.php
索引添加customurlmanager
组件,以便在创建Web应用程序之前加载它。
'preload' => array('log', 'customurlmanager'),
然后检查它是否也会添加附加规则。
否则,如果您使用的是1.1版,则表示urlManager本身有一个方法可以添加名为addRules
的规则,所以基于此我可以解释
在组件目录
中添加此类class ModuleUrlManager {
static function collectRules() {
$rule = array('test' => 'site\test', ...);
$urlManager = Yii::app()->getUrlManager();
$urlManager->addRules($rule);
return true;
}
}
然后在main.php配置中将此数组添加到第一维自身
中'onBeginRequest' =>array('ModuleUrlManager', 'collectRules'),
其中in onBeginRequest
数组第一个索引包含类名,第二个索引包含方法名