webman在beforeAction中使用重写的Request出错

hakiu

根据文档重写了Requeset,在beforeAction中使用app\Request,出现错误:

Argument 1 passed to app\\common\\ApiController::beforeAction() must be an instance of app\\Request, instance of support\\Request given

server.php中也增加了配置项
"request_class" => app\Request::class

请问如何解决?

1319 1 0
1个回答

hakiu

实在不行,我直接在 support\Request.php中写方法呢?不需要再在app\Request.php再写了

  • walkor 2022-04-02

    确认下你的版本是否支持设置request_class

  • hakiu 2022-04-02

    看了一下1.2.7,文档说是1.2.5就可以

  • walkor 2022-04-02

    ./webman version
    贴下

  • hakiu 2022-04-02

    项目在window下面,componser.json中看的版本号

  • hakiu 2022-04-02

    Workerman version:4.0.30 PHP version:7.4.3

  • walkor 2022-04-02

    composer.json是webman-framework的版本号,不是webman的。如果你搞不定就在support/Requset里加

  • hakiu 2022-04-02

    查到了,1.2.4,要升级,谢谢walkor

  • hakiu 2022-04-02

    版本升级后,还是一样出错

  • hakiu 2022-04-02

    Webman-framework v1.3.0

  • hakiu 2022-04-02

    webman version 1.2.5

  • walkor 2022-04-02

    执行./webman instsall

  • hakiu 2022-04-02

    执行了

  • hakiu 2022-04-02

    λ php webman install
    Execute installation for webman
    Create support/helpers.php
    Create support/bootstrap.php
    Create support/Plugin.php

  • walkor 2022-04-02

    Webman-framework 升级到最高

  • hakiu 2022-04-02

    好的,一次又一次回复,添麻烦了

  • walkor 2022-04-02

    目前最高1.3.8,升级完./webman install

  • hakiu 2022-04-02

    ok,谢谢,我直接升级到 1.3.8

  • hakiu 2022-04-02

    执行 php webman install 出错了

    Fatal error: Uncaught FastRoute\BadRouteException: Cannot register two routes matching "/" for method "GET" in E:\shopProject\new_project\server\vendor\nikic\fast-route\src\DataGenerator\RegexBasedAbstract.php:86
    Stack trace:

    0 E:\shopProject\new_project\server\vendor\nikic\fast-route\src\DataGenerator\RegexBasedAbstract.php(30): FastRoute\DataGenerator\RegexBasedAbstract->addStaticRoute('GET', Array, Array)

    1 E:\shopProject\new_project\server\vendor\nikic\fast-route\src\RouteCollector.php(44): FastRoute\DataGenerator\RegexBasedAbstract->addRoute('GET', Array, Array)

    2 E:\shopProject\new_project\server\vendor\workerman\webman-framework\src\Route.php(344): FastRoute\RouteCollector->addRoute(Array, '/', Array)

    3 E:\shopProject\new_project\server\vendor\workerman\webman-framework\src\Route.php(160): Webman\Route::addRoute(Array, '/', Array)

    4 E:\shopProject\new_project\server\config\route.php(50): Webman\Route::any('/', Array)

    5 E:\shopProject\new_project\server\config\route.php(63): Webman\Route::{closure}('', Array)

    in E:\shopProject\new_project\server\vendor\nikic\fast-route\src\DataGenerator\RegexBasedAbstract.php on line 86

  • walkor 2022-04-02

    更新下webman/auto-route

  • hakiu 2022-04-02

    更新了,还是一样的问题,"webman/auto-route": "^1.0",实际版本是1.0.2

  • walkor 2022-04-02

    之前有用到 webman/auto-route 没?发下config/route.php

  • hakiu 2022-04-02

    没有,我刚开始用这个做项目,在做准备工具,写了个api的basecontroller

  • hakiu 2022-04-02

    哦,明白了,我先把route.php清空吧

  • walkor 2022-04-02

    那把webman/auto-route 卸载了吧。以为你装了 webman/auto-route。
    那个报错应该是路由不规范重复了,调用栈能看到那个重复

  • hakiu 2022-04-02

    新版本,多应用下面加了v1目录,不需要再使用文档中在route.php增加的内容了吧?

  • walkor 2022-04-02

    我不知大你v1目录在哪里,你自己试下吧,不行就route.php 或者使用 webman/auto-route

  • hakiu 2022-04-02

    现在好像能执行,config/route.php清空了,可以识别到 module/version/controller/action

  • hakiu 2022-04-02

    现在还有一个小的需求,我获取到text/plain中的文本,解析成数组后,再放到post中,有什么好解决的方案?

  • hakiu 2022-04-02

    可以了,已解决,我将解析好的数组放到$this->_data['post']中了,目前来看,没有问题,谢谢作者大大

  • hakiu 2022-04-02

    其实这个功能不要也可以,禁止content_type=text/plain,只允许json即可

  • hakiu 2022-04-02

    如果用json,http/request中的parsePost方法就可以解析

年代过于久远,无法发表回答
🔝