【问题标题】:Return callback based on route name in Laravel根据 Laravel 中的路由名称返回回调
【发布时间】:2019-10-17 06:28:14
【问题描述】:

我在互联网上搜索了很多,但找不到解决方案。

我需要根据路由名称返回路由上注册的callback


示例

我的路线/api.php:

Route::get('test', 'TestController@test')->name('test');

也就是说,根据上面的例子,我想捕获字符串TestController@test,说明路由是'test'。

有可能吗?

有人可以帮我吗?

提前感谢您的关注。

【问题讨论】:

    标签: php laravel controller routes


    【解决方案1】:

    您可以在 Route 实例上使用 getActionName()getAction('controller') 来获取此信息。您将获得一个 FQCN。要获取最后一部分,您可以使用class_basename()

    $route = Route::getRoutes()->getByName('test');
    
    $action = $route->getActionName();
    // 'App\Http\Controllers\TestController@test'
    
    $basename = class_basename($action); 
    // 'TestController@test'
    
    // all together now
    class_basename(Route::getRoutes()->getByName('test')->getActionName());
    

    【讨论】:

    • 比我早 10 分钟找到它:D
    • 呵呵,从之前的回答stackoverflow.com/questions/58356764/… 中仍然记在心里:p
    • 所以这应该是重复的:p
    • 不,他们想要另一个中的路由方法,这想要动作
    • 好的!足够公平
    【解决方案2】:

    如果您只想获得TestController@test,您可以这样做

    substr(strrchr(Route::getRoutes()->getByName('test')->action['uses'], '\\'), 1);
    

    希望对你有帮助

    【讨论】:

    • 完美!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 2021-07-11
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    相关资源
    最近更新 更多