这里写问题描述 如题。比如路由/admin/article/index,用request()->controller获取的值希望是article。而不是App\Admin\Controller\ArticleController这种。 或者,是不是有其他框架内已经写好的方法
估计没有,否则这些控制器 App\Admin\Controller\ArticleController App\Api\Controller\ArticleController App\User\Controller\ArticleController 都叫article,就乱了 自己封装个函数截取呗
谢谢,目前只能这么实现了
/** * @param Request $request * @return \support\Response */ public function index(Request $request): \support\Response { return json($this->getClassName()); } /** * @return string */ private function getClassName(): string { $classFile = debug_backtrace()[1]['class']; $map = explode('\\', $classFile); $class = is_array($map) ? array_pop($map) : $map; return str_replace('Controller', '', $class); }
谢谢提供思路
$controllerClass = request()->controller; strtolower(substr($controllerClass, strrpos($controllerClass, '\') + 1));
谢谢您。这个方法比较简单
这个好像没有考虑到Controller后缀的情况。我已经自己加了替换了。 $controllerMap = explode('\',request()->controller); $controller = strtolower(str_replace(config('app.controller_suffix'),'',end($controllerMap)));
get
参考
https://www.workerman.net/q/8083 论坛里面有很多答案 可以提前搜索
估计没有,否则这些控制器
App\Admin\Controller\ArticleController
App\Api\Controller\ArticleController
App\User\Controller\ArticleController
都叫article,就乱了
自己封装个函数截取呗
谢谢,目前只能这么实现了
谢谢提供思路
谢谢您。这个方法比较简单
这个好像没有考虑到Controller后缀的情况。我已经自己加了替换了。
$controllerMap = explode('\',request()->controller);
$controller = strtolower(str_replace(config('app.controller_suffix'),'',end($controllerMap)));
get
参考