Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带参数的控制器操作返回404未找到_Php_Yii_Controller_Http Status Code 404 - Fatal编程技术网

Php 带参数的控制器操作返回404未找到

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

我正在使用Yii,我有一个名为
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
,但它导致