要求不在YII中工作的规则

时间:2014-06-07 06:17:06

标签: php .htaccess yii yii-extensions

我的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。有没有想法解决这个问题。

1 个答案:

答案 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数组第一个索引包含类名,第二个索引包含方法名