【问题标题】:Yii Extending Request Component returns 500 errorYii 扩展请求组件返回 500 错误
【发布时间】:2018-04-13 18:57:57
【问题描述】:

我正在尝试扩展 Yii2 的 Request 组件,因为我们之前的 Yii1 项目扩展了 CHttpRequest,但无论我尝试什么,我得到的都是 500 错误。我的配置如下:

'components' => [
    'request' => [
        'class' => 'app\components\MY_HttpRequest',
        'cookieValidationKey' => '...',
    ],
    ...
],

然后在 //components/MY_HttpRequest.php 中,即使是一个只调用父方法的空类:

<?php

//namespace app\components;
namespace app\components\MY_HttpRequest;

use Yii;

class MY_HttpRequest extends yii\web\Request {
}

它显示 500 错误,因此我无法真正调试它,因为我没有任何反馈。我在 Google 上搜索了如何扩展 Request 组件,但我发现的只是一个关于如何扩展 Response component 的问题,而且我已经在使用该方法但没有成功。

没有关于错误的详细信息(仅以 example.com 为例):

此外,如果我像这样更改此行:

'class' => 'app\components\MY_HttpRequestaaaaaaaaaaaaaa',

我收到文件未找到的错误,所以我知道文件正在加载。

【问题讨论】:

  • 错误 500 是为了什么? .. 显示完整的错误信息
  • 一个典型的 500 服务器错误,我没有任何详细信息,但如果这有帮助,我添加了一个屏幕截图
  • 你能显示components/MY_HttpRequest.php文件的所有内容吗?
  • 当然可以!刚刚做了:)
  • 啊!!我知道了!忘记了我错过的一个简单的小反斜杠! “扩展\yii\web\Request”,而不是“扩展yii\web\Request”

标签: yii yii2


【解决方案1】:

将你的类和文件名更改为MYHttpRequest,它将起作用

'components' => [
    'request' => [
        'class' => 'app\components\MYHttpRequest',
        'cookieValidationKey' => '...',
    ],
]

还有组件/MYHttpRequest.php

namespace app\components;

class MYHttpRequest extends \yii\web\Request {

}

【讨论】:

  • 感谢朋友的建议,不过我已经试过了,还是不行:/
  • 我希望你的 components/MYHttpRequest.php 文件有像 namespace app\components; 这样的命名空间?
  • 我复制了你的代码,替换了“_”符号,问题解决了
  • 已尝试命名空间 app\components; AND 命名空间 app\components\MYHttpRequest;还是不想工作……我不明白
  • 我知道了,朋友!我在一个新的空白项目中重写了另一个类,这只是一个错字!我写的是“extends yii\web\Request”而不是“extends \yii\web\Request”
【解决方案2】:

原来我只是在“扩展”语句中忘记了一个小反斜杠。

class MY_HttpRequest extends yii\web\Request

应该是

class MY_HttpRequest extends \yii\web\Request

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2017-12-13
    • 1970-01-01
    • 2020-04-21
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多