Yii importcsv模块令人头疼

时间:2012-04-20 21:13:38

标签: ajax yii

我安装了importcsv模块,并且importcsv页面加载正常。加载网址https://web/importcsv

时会显示文件上传按钮

我上传了一个文件,并出现了ajax“loading”文本,但是ajax响应结果是我的网站的整个布局和默认的importcsv上传页面,而不是我认为应该加载到importCsvFirstStepResult div(“下一步”字段),在download.js中的ajax请求完成后

 ...
   onComplete : function(file, response) {
        this.enable();
        $("input#fileName").val(file);
        $("div#importCsvFirstStepResult").html(response);
    }

/ importcsv / default / upload ajax响应显然包含错误的布局,无法检​​测到请求,或者????并将默认视图加载到响应div,菜单和所有内容中。我是Yii的新手所以也许这显然是有人在那里。

感谢您的协助。

1 个答案:

答案 0 :(得分:2)

解决了我自己的问题。 ajax问题是由于我调整了(破坏)我的urlManager规则。我更改了原始规则以适应表上的非数字主键。例如,查看患者的网址为https://web/patients/view/ABC_1234而不是https://web/patients/view/1234

我倾向于尽可能使用现有的数据库模式以及现在设置客户端数据库模式的方式,他们使用的是非数字主键。我想继续这个由于某些原因所以我必须编辑url params becuase \ d只匹配数字。不幸的是,将它更改为\ w也符合一些ajax请求并打破了整个事情。

Yii原始规则。工作正常,但不适用于字母数字主键:

 'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),

首先我将其更改为以下内容,以处理字母数字外键,但这打破了一些ajax:

'rules'=>array(
                '<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                '/gii'=>'/gii/default/login',
        ),

最后得到以下内容,它允许ajax模块正常运行,并处理我的非数字键:

'rules'=>array(
   '/libraries/<action:\w+>/<id:\w+>'=>'/libraries/<action>',
   '/patients/<action:\w+>/<id:\w+>'=>'/patients/<action>',
   '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
   '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),

我最终明确地为需要它的控制器设置了规则。他们中的大多数使用整数主键

希望这有助于其他人。我是Yii的新手,当我改变规则时,我并没有完全理解Yii中的规则和ajax系统。

干杯