webman多应用 控制器多层嵌套后beforAction会失效

864328615

猜测是那个自动解析路由的官方说明有问题,目前找不到具体原因,顺带再问下,多层嵌套的控制器只能通过路由自动解析实现,那么怎么为不同的路由设定中间件呢 这个官方没有说明,是否跟正常控制器的那种路由一样的设置方法

1287 1 0
1个回答

walkor

beforeAction 这里测试没有问题。

路由自动解析最终是通过代码Route::any($uri, $cb);来添加路由的,代码是可根据自己需要编辑的,在调用Route::any($uri, $cb);的地方根据自己需要调用Route::any($uri, $cb)->middleware();方法即可

  • 864328615 2022-02-25

    大佬beforeAction里对属性的定义 无法在其他方法里使用,其他方法还是拿到的还是定义时的默认值

  • 864328615 2022-02-25

    /**

    • 控制器前置
    • @param Request $request
      */
      public function beforeAction(Request $request) :void
      {
      //parent::beforeAction($request);
      $this->model = 222222222;
      $this->modelSceneValidate = false;
      var_dump('beforeAction');
      }

      /**

    • @param Request $request
      */
      public function index(Request $request) :void
      {
      var_dump($this->model);
      }
  • 864328615 2022-02-25

    beforeAction里把model定义成了22222..,然后index 里打印的model还是默认值,这个经测试,但应用多应用都正常,但是controller多册目录的时候就不正常了

  • walkor 2022-02-25

    在 route.php 中路由自动解析里的 $class = new ReflectionClass($class_name); 的后面加一行 $class_name = $class->name;

  • 864328615 2022-02-25

    谢谢大佬

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