Php Yii应用程序()->;创建视图操作的URL
我在一个模块中使用Gii生成的动作。我有一个与id参数一起工作的正常视图操作(例如Php Yii应用程序()->;创建视图操作的URL,php,url,yii,Php,Url,Yii,我在一个模块中使用Gii生成的动作。我有一个与id参数一起工作的正常视图操作(例如example.com/news/view/id/1)。 当我使用这行代码时: Yii::app()->createUrl("news/view",array("id"=>$data->primaryKey)) Yii::app()->createUrl("news/view/id/",array("id"=>$data->primaryKey)) 它生成example.co
example.com/news/view/id/1
)。当我使用这行代码时:
Yii::app()->createUrl("news/view",array("id"=>$data->primaryKey))
Yii::app()->createUrl("news/view/id/",array("id"=>$data->primaryKey))
它生成example.com/news/1
(如果$data->primaryKey
为1)。这是不正确的。当我使用这行代码时:
Yii::app()->createUrl("news/view",array("id"=>$data->primaryKey))
Yii::app()->createUrl("news/view/id/",array("id"=>$data->primaryKey))
它生成example.com/news/id/id/1
(如果$data->primaryKey
为1)
我真糊涂!在第一种情况下,此函数不生成id作为参数名,而在第二种情况下,它生成id!但在手动添加id之后。我该怎么做才能用这个函数生成正确的url格式 编辑:新闻是一个模块。我将代码行更改为:
Yii::app()->createUrl("news/default/view/id/",array("id"=>$data->primaryKey))
它生成的
example.com/news/default/view/id/1
是正确的,但我不想要那个默认值 在配置文件中有如下内容:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
在模块defaut上:
Yii::app()->createUrl('/news/default/view', array('id' => $data->primaryKey))
您需要创建urlmanager规则。。。您希望如何查看您的URL。更多详细信息。使用
'rules'=>array(
'news/<controller:\w+>/<id:\d+>'=>'news/<controller>/view',
'news/<controller:\w+>/<action:\w+>/<id:\d+>'=>'news/<controller>/<action>',
'news/<controller:\w+>/<action:\w+>'=>'news/<controller>/<action>',
),
“规则”=>数组(
'news//'=>'news//view',
“新闻//”=>“新闻/”,
“新闻/”=>“新闻/”,
),
如果您有模块名称新闻
您可以尝试用正则表达式替换新闻
,但是如果您的正则表达式太宽,那么您将面临由多个正则表达式匹配的URL问题。在规则数组键和规则数组值中使用类似于
的内容
如果您需要更复杂的url管理,或者如果您无法使用正则表达式解决您的任务,您可以随时扩展CUrlManager。尝试在以下目录中检查它:protected/config/main.php sir。
urlManager'=>数组(
“urlFormat'=>“路径”,
'规则'=>数组(
“/”=>“/视图”,
'//'=>'/',
'/'=>'/',
),
),
请注意,这条线路走得好吗?:) 在yii2中使用: