$_GET变量在两个控制器中的作用不同,原因不明显(Yii)


$_GET variable functions differently in two controllers for no obvious reason (Yii)

我有使用Yii 1.x框架的CMS(内置)。它使用Bootstrap TbGridView小部件以表格格式显示带有分页的记录。

这些GridView视图具有下拉菜单,允许管理员用户对数据进行一些筛选。如下所示,使用$_GET变量设置模型属性。

$model->setAttributes($_GET[get_class($model)]);

因此,如下所示的$_GET字符串生成以下内容:

myapp.local/myapp/myuser/admin/ajax/myuser grid/myuser%5名字%5D//myuser%5姓氏%5D//My用户%5用户名%5D//My-user%5Year_id%5D/11/myuser_page/2

这将生成以下$_GET数组:

Array ( 
   [ajax] => myuser-grid 
   [Myuser] => 
      Array ( [firstname] => [surname] => [username] => [year_id] => 11 ) 
   [Myuser_page] => 2 ) 

正如您所看到的,"Myuser"键包含一个数组(包括名字、姓氏等)

现在,由于某种原因,在我们CMS中的另一个模块上,$_GET变量的生成方式"似乎"相同。例如,由于某种未知原因,下面的url字符串以不同的方式返回$_GET变量。

myapp.local/myapp/shop/products/ajax/myuser grid/myuser%5名字%5D//myuser%5姓氏%5D//My用户%5用户名%5D//我用户%5Year_id%5D/11/myuser_page/2

这将生成以下$_GET阵列

Array ( 
   [ajax] => myuser-grid 
   [Myuser[firstname]] => [Myuser[surname]] => [Myuser[username]] => [Myuser[year_id]] => 11
   [Myuser_page] => 2 ) 

由于某些原因,我希望它看起来与上面的另一个数组完全相同(Myuser是数组格式)。

有人能解释为什么$_GET变量会有不同的表现吗?唯一的区别是一个来自我的myuser控制器,另一个来自shopProducts控制器。

有人能告诉我为什么会发生这种事吗??P.S我看不到任何手动操作$_GET变量的逻辑。

在我看来,这就像是一个url重写问题。您应该检查yii中的.htaccess文件和urlManager。