【问题标题】:Get the prefix in Laravel 5.1 -Dingo/Api在 Laravel 5.1 -Dingo/Api 中获取前缀
【发布时间】:2016-01-30 13:26:36
【问题描述】:

我正在使用 Laravel 5.1 和 Dingo/Api。有没有办法在其中获取路由前缀? 我尝试了 getLastGroupPrefix() 但它总是返回 null

这是我的代码

基础控制器:

public function isAdminRequest()
    {
        return Route::getLastGroupPrefix();
    }

路线:

$api->group(array('prefix' => 'admin'), function($api)
    {
        $api->resource('users', "App\Http\Controllers\UsersController");
    });

我正在尝试通过这样做在我的 UsersController 中使用它

    public function index()
    {
        return $this->isAdminRequest();
    }

但我只是得到一个空白页。

【问题讨论】:

  • 所以你只想获取路由的前缀?你想返回“admin”吗?

标签: php laravel-5.1 laravel-routing dingo-api


【解决方案1】:

如果你想得到一个组的前缀,把你的函数改成如下所示:

public function isAdminRequest(\Illuminate\Http\Request $request)
{
    return $request->route()->getPrefix();
}

这将返回“admin”,因为这是组的前缀。

【讨论】:

  • 我如何从我的 UsersController 中调用它
  • @itsbharat 啊,我明白你的意思了。严格来说,控制器不应该互相交谈。您是否有任何理由不使用 UserController 中的“isAdminRequest”?也许如果我理解你的推理,我可以更好地帮助你。
  • 没有 UsersController 扩展 BaseController。所以我使用$this->isAdminRequest() 之类的方法。我对您的解决方案的问题是如何将 Request 对象作为参数传递给函数(在 GET 中)
  • 我还是不完全明白你想要达到什么目的?我不明白为什么“isAdminRequest”在 BaseController 中?
  • BaseController 只是有这个方法 isAdminRequest 通过它我可以检查任何控制器管理请求。我只是想知道如何将 GET 中的 Request 对象传递给您创建的函数?
【解决方案2】:

好的,临时解决办法,我已经完成了

public function isAdminRequest()
{
    $uri = Route::current()->uri();
    $uri = explode('/',$uri);
    if($uri[2] == "admin")
        return true;
    return false;
}

我知道非常糟糕的解决方案。但等待更好的。直到那时。 (如果它对任何人有用)

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 2017-05-11
    • 2018-08-12
    • 2017-10-18
    • 2015-10-09
    • 2018-08-28
    • 2015-10-08
    • 2023-03-21
    • 2016-07-22
    相关资源
    最近更新 更多