尝试访问自定义帮助程序中的别名会引发 'Not found' 消息。 Laravel 5.7

Trying to access alias inside a custom helper throws 'Not found' message. Laravel 5.7

对于我的应用程序,我创建了一个函数,该函数 returns 一个视图或一个已经呈现的视图 json。因为我需要经常使用这个函数,所以我制作了一个自定义助手,这样我就可以从每个控制器调用它。然而不幸的是,当我尝试在这个助手中使用另一个别名时,它似乎无法识别它。给我一条消息,说即使我可以从任何控制器访问和使用别名 'Request' 也找不到。

我已经在 de config/app.php 中添加了带有别名的帮助程序,以便更容易访问它。

这是我的代码:

控制器:

use AppHelper;

class MediaController extends Controller
{

    public function index() 
    {
        return AppHelper::returnView("backend.media.index", "navigation.media.media");
    }
    ...

应用助手:

<?php
namespace App\Helpers;
use Request;

class AppHelper
{
    public static function returnView($viewName, $menu, $data = []) {

        $template = $viewName.'-template';
        $view = $viewName;

        if (Request::ajax()) {
            if(isset($data->id)){
                $navigation = view('backend.navigation.right-menu')->with('id', $data->id)->with('menuItems', $menu)->render();
        } else {
        ...

在帮助程序中,我也尝试通过其实际路径调用 'Request',但无济于事。

我已经尝试查找一个小时左右的解决方案,但似乎无法在 google 或 Whosebug 上找到它。

感谢阅读。

亲切的问候,西蒙

我不认为

use Request;

足够具体,考虑到 Laravel 中不同 Request 类 的数量。您可能正在寻找:

use Illuminate\Http\Request;

如果您想在 AppHelper 或别名 Request 的某处定义 Request $request,可通过以下方式获得:

use Illuminate\Support\Facades\Request;

应该允许使用 Request::ajax() 和类似的功能。

或者,您可以从 MediaController 函数 index() 传递 $request 对象,该对象已可从任何控制器方法获得,例如:

MediaController.php

use Illuminate\Http\Request;

public function index(Request $request){
  return AppHelper::returnView($request, "backend.media.index", "navigation.media.media");
}

AppHelper.php

public static function returnView($request, $viewName, $menu, $data = []) {
  ...
  if($request->ajax()){
    ...
  }
}

编辑:ajax() 方法的一些注意事项:

use Illuminate\Support\Facades\Request;
...
if(Request::ajax()){ ... }

以上应该可以正常工作,或者,删除 use 语句并引用

if(\Request::ajax()){ ... }

传递 $request 时,请确保它是 Illuminate\Http\Request 的实例,并且 $request->ajax() 应该可以正常工作。