Php 带参数的控制器操作返回404未找到
我正在使用Yii,我有一个名为Php 带参数的控制器操作返回404未找到,php,yii,controller,http-status-code-404,Php,Yii,Controller,Http Status Code 404,我正在使用Yii,我有一个名为User的控制器和一些CRUD操作操作。我增加了一项新的行动如下: public function actionEmbedded($field, $action, $id){ /* code */ } 要访问此操作,url应为 /user/embedded/field/logins/action/view/id/5542ab0cb0db0ab000000001 但这将返回一个404未找到错误 但是当我将其中一个参数更改为$\u id而不是$id publ
User
的控制器和一些CRUD操作操作。我增加了一项新的行动如下:
public function actionEmbedded($field, $action, $id){
/* code */
}
要访问此操作,url应为
/user/embedded/field/logins/action/view/id/5542ab0cb0db0ab000000001
但这将返回一个404未找到错误
但是当我将其中一个参数更改为$\u id
而不是$id
public function actionEmbedded($field, $action, $_id){
/* code */
}
。。。可以像预期的那样访问操作
/user/embedded/field/logins/action/view/_id/5542ab0cb0db0ab000000001
你知道为什么吗?是否保留了我的任何参数名?我确实在其他操作中使用了$id
,如果这可能是导致这种行为的原因的话
更新:
下面是我的config.php文件中的urlManager代码
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=> false,
'rules'=>array(
// Handles differen API versions
'api/1.0/<action:\w+>/*' => 'api_1_0_/<action>',
array('api_1_1_/<action>', 'pattern'=>'api/1.1/<action:\w+>', 'verb' => 'GET'),
//array('api_1_1_/Post<action>', 'pattern'=>'api/1.1/<action:\w+>/*', 'verb' => 'POST'),
// User specific API calls (starts with users/me)
array('api_1_1_/prices', 'pattern'=>'api/1.1/prices/<market:\w+>/<biddingArea:\w+>/hour/<period:\w+>', 'verb' => 'GET'),
array('api_1_1_/view/model/users/id/me', 'pattern'=>'api/1.1/users/me', 'verb' => 'GET'),
array('api_1_1_/listEmbeddedArray/model/users/id/me/array/contracts', 'pattern'=>'api/1.1/users/me/meters', 'verb' => 'GET'),
array('api_1_1_/view/model/units/id/<id>', 'pattern'=>'api/1.1/users/me/meters/<id:\w+>', 'verb' => 'GET'),
//array('api_1_1_/viewEmbeddedArray/model/users/id/me/array/contracts/ean/<ean>', 'pattern'=>'api/1.1/users/me/meters/<source:\w+>/<ean:\w+>', 'verb' => 'GET'),
//array('api_1_1_/series', 'pattern'=>'api/1.1/users/me/meters/<source:\w+>/<ean:\w+>/series/<query:\w+>', 'verb' => 'GET'),
//array('api_1_1_/series/source/<source>/ean/<ean>/resolution/<resolution>/query<query>', 'pattern'=>'api/1.1/users/me/meters/<source:\w+>/<ean:\w+>/series/<resolution:\w+>/<query:\w+>', 'verb' => 'GET'),
//array('api_1_1_/view/model/unit/id/<id>', 'pattern'=>'api/1.1/users/me/meters/<id:\w+>', 'verb' => 'GET'),
array('api_1_1_/series/id/<id>', 'pattern'=>'api/1.1/users/me/series/<id:\w+>', 'verb' => 'GET'),
array('api_1_1_/list', 'pattern'=>'api/1.1/users/me/<model:\w+>', 'verb' => 'GET'),
array('api_1_1_/view', 'pattern'=>'api/1.1/users/me/<model:\w+>/<id:\w+>', 'verb' => 'GET'),
array('api_1_1_/delete', 'pattern'=>'api/1.1/users/me/<model:\w+>/<id:\w+>', 'verb' => 'DELETE'),
// General API calls
array('api_1_1_/download', 'pattern'=>'api/1.1/download/<model:\w+>', 'verb' => 'GET'),
array('api_1_1_/series', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>/series', 'verb' => 'GET'),
array('api_1_1_/listEmbeddedArray', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>/<array:\w+>', 'verb' => 'GET'),
array('api_1_1_/updateEmbeddedArray', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>/<array:\w+>/<ean:\w+>', 'verb' => 'PUT'),
array('api_1_1_/deleteEmbeddedArray', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>/<array:\w+>/<ean:\w+>', 'verb' => 'DELETE'),
array('api_1_1_/viewEmbeddedArray', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>/<array:\w+>/<ean:\w+>', 'verb' => 'GET'),
array('api_1_1_/createEmbeddedArray', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>/<array:\w+>', 'verb' => 'POST'),
array('api_1_1_/list', 'pattern'=>'api/1.1/<model:\w+>', 'verb' => 'GET'),
array('api_1_1_/view', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>', 'verb' => 'GET'),
array('api_1_1_/update', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>', 'verb' => 'PUT'),
array('api_1_1_/delete', 'pattern'=>'api/1.1/<model:\w+>/<id:\w+>', 'verb' => 'DELETE'),
array('api_1_1_/create', 'pattern'=>'api/1.1/<model:\w+>', 'verb' => 'POST'),
),
),
'urlManager'=>数组(
“urlFormat'=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
//处理不同的API版本
“api/1.0/*”=>“api\u 1\u 0\u/”,
数组('api_1_1_1/','pattern'=>'api/1.1/','verb'=>'GET'),
//数组('api\u 1\u 1\u/Post','pattern'=>'api/1.1//*','verb'=>'Post'),
//特定于用户的API调用(从用户/me开始)
数组('api\u 1\u 1\u/prices','pattern'=>'api/1.1/prices///hour/','verb'=>'GET'),
数组('api\u 1\u 1\u/view/model/users/id/me','pattern'=>'api/1.1/users/me','verb'=>'GET'),
数组('api_1_1_1/listEmbeddedArray/model/users/id/me/array/contracts','pattern'=>'api/1.1/users/me/meters','verb'=>'GET'),
数组('api\u 1\u 1\u/view/model/units/id/,'pattern'=>'api/1.1/users/me/meters/,'verb'=>'GET'),
//数组('api_1_1_1_/viewEmbeddedArray/model/users/id/me/array/contracts/ean/','pattern'=>'api/1.1/users/me/meters/','verb'=>'GET'),
//数组('api_1_1_1/series','pattern'=>'api/1.1/users/me/meters///series/','verb'=>'GET'),
//数组('api\U 1\U 1\U/series/source//ean//resolution//query','pattern'=>'api/1.1/users/me/meters///series//','verb'=>'GET'),
//数组('api\u 1\u 1\u/view/model/unit/id/','pattern'=>'api/1.1/users/me/meters/','verb'=>'GET'),
数组('api\u 1\u 1\u/series/id/','pattern'=>'api/1.1/users/me/series/','verb'=>'GET'),
数组('api\u 1\u 1\u/list','pattern'=>'api/1.1/users/me/','verb'=>'GET'),
数组('api\u 1\u 1\u/view','pattern'=>'api/1.1/users/me/','verb'=>'GET'),
数组('api\u 1\u 1\u/delete','pattern'=>'api/1.1/users/me/','verb'=>'delete'),
//通用API调用
数组('api\u 1\u 1\u/download'、'pattern'=>'api/1.1/download/'、'verb'=>'GET'),
数组('api\U 1\U 1\U/series','pattern'=>'api/1.1///series','verb'=>'GET'),
数组('api\u 1\u 1\u/listEmbeddedArray','pattern'=>'api/1.1//','verb'=>'GET'),
数组('api\u 1\u 1\u/updateEmbeddedArray','pattern'=>'api/1.1///','verb'=>'PUT'),
数组('api\U 1\U 1\U/deleteEmbeddedArray','pattern'=>'api/1.1///','verb'=>'DELETE'),
数组('api_1_1_/viewEmbeddedArray','pattern'=>'api/1.1///','verb'=>'GET'),
数组('api_1_1_/createEmbeddedArray','pattern'=>'api/1.1//','verb'=>'POST'),
数组('api\u 1\u 1\u/list','pattern'=>'api/1.1/','verb'=>'GET'),
数组('api\U 1\U 1\U/view','pattern'=>'api/1.1/','verb'=>'GET'),
数组('api\u 1\u 1\u/update','pattern'=>'api/1.1/','verb'=>'PUT'),
数组('api\u 1\u 1\u/delete','pattern'=>'api/1.1/','verb'=>'delete'),
数组('api\u 1\u 1\u/create','pattern'=>'api/1.1/','verb'=>'POST'),
),
),
我无法发表评论,所以我会将此作为答案发布,即使它不是;检查您的urlManager规则,您的urlManager规则中可能有一种模式适合您的请求,框架会尝试执行它。如果我没记错的话,视图的默认规则需要参数$id
,因此,您的应用程序可能会也可能不会试图调用userController::actionView($id)
,因为在您的配置中,规则看起来像'/'=>'/view'
,而该参数不存在
但这只是一个猜测,我建议您打开debug并检查应用程序试图去哪里。您可能可以通过在urlManager配置中将视图规则更改为module/controller/view而不是controller/view来解决这个问题
干杯。我不能发表评论,所以我会将此作为答案发布,即使它不是;检查您的urlManager规则,您的urlManager规则中可能有一种模式适合您的请求,框架会尝试执行它。如果我没记错的话,视图的默认规则需要参数
$id
,因此,您的应用程序可能会也可能不会试图调用userController::actionView($id)
,因为在您的配置中,规则看起来像'/'=>'/view'
,而该参数不存在
但这只是一个猜测,我建议您打开debug并检查应用程序试图去哪里。您可能可以通过在urlManager配置中将视图规则更改为module/controller/view而不是controller/view来解决这个问题
干杯。您似乎在使用url管理器或其他东西,否则您的url看起来像
/index.php?r=user/embedded&id=5542ab0cb0db0ab000000001
。您如何使用该类型的url访问您的操作?是的,我使用urlManager。我试图关闭它并使用了/index.php?r=user/embedded&id=525ec506df6232341c000033&field=logins&action=view
,但它导致了同样的问题…你能发布urlmanager代码吗?我用urlmanager代码更新了我的问题。你似乎在使用url管理器之类的东西,或者您的url看起来像/index.php?r=user/embedded&id=5542ab0cb0db0ab000000001
。您如何使用该类型的url访问您的操作?是的,我使用urlManager。我试图关闭它并使用/index.php?r=user/embedded&id=525ec506df6232341c00033&field=logins&action=view
,但它导致