【问题标题】:Yii2 Web Service not returning a single row from databaseYii2 Web服务未从数据库返回单行
【发布时间】:2018-01-04 12:09:45
【问题描述】:

我使用 yii2 基本模板创建了一个 Web 服务,当我调用它时,我得到了一个名为“ely_usuario”的表:

http://localhost/basic/web/index.php/ely-usuario/

它工作正常并返回我 ely​​_usuario 表中的所有行

但是当我尝试只获取一条记录时,例如:

http://localhost/basic/web/index.php/ely-usuario/29

不行,给我一个找不到的页面,我用gii做了模型类

这是我的控制器:

<?php
namespace app\controllers;

use yii\rest\ActiveController;

class ElyUsuarioController extends ActiveController
{
    public $modelClass = 'app\models\ElyUsuario';
}

我的配置:

'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => false,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'ely-usuario'],
            ],
        ],

你可能注意到的另一件奇怪的事情是'enableStrictParsing' 是假的,在 yii2 指南中它说是真的,但对我来说它只适用于假

谢谢

【问题讨论】:

    标签: web-services yii2


    【解决方案1】:

    您需要更改配置中的代码。我希望您能从下面的代码中得到一个想法。它对我来说很好!

    'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    '<controller:(ely-usuario)>/<action>/<id:\d+>' => '<controller>/<action>',
    ],
    ],
    

    请在您的控制器中检查您的具体操作。它必须编码为:

    public function actionTransactions($id=null){
    if($id!=null){
    //retrieve single row
    }else{
     //retrieve multiple rows
    }
    

    也请查看此链接以供参考:

    Why RESTfull API request to view return 404 in Yii2?

    希望对你有帮助!

    【讨论】:

    • 那么我应该创建一个动作来检索单行吗?
    • 我已经编辑了我的答案。如果仍然没有结果,请创建其他操作,您将在其中收到您的请求:$id = (int) Yii::$app->request-> get('id');
    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 2018-05-23
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多