Попытка получить доступ к псевдониму внутри пользовательского помощника выдает сообщение "Не найдено". Ларавел 5.7

Для моего приложения я создал функцию, которая возвращает либо представление, либо уже обработанное представление внутри некоторого json. Поскольку мне нужно будет использовать эту функцию довольно часто, я сделал специальный помощник, чтобы я мог вызывать его с любого контроллера. однако, к сожалению, когда я пытаюсь использовать другой псевдоним внутри этого помощника, он, кажется, не распознает его. сообщая мне, что псевдоним "Запрос" не найден, хотя я могу получить к нему доступ и использовать его с любого контроллера.

Я добавил помощника внутри de config/app.php с псевдонимом, чтобы было проще получить к нему доступ.

Это мой код:

контроллер:

use AppHelper;

class MediaController extends Controller
{

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

AppHelper:

<?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 {
        ...

В помощнике я также пытался вызвать "Запрос" через его фактический путь, но безрезультатно.

Я пытался найти решение в течение часа или около того, но просто не могу найти его в Google или в stackru.

Спасибо за прочтение.

С уважением, Саймон

1 ответ

Решение

Я не думаю

use Request;

достаточно конкретен, учитывая количество различных Request занятия в Ларавеле. Вы, вероятно, ищете:

use Illuminate\Http\Request;

если вы хотите определить Request $request где-то в вашем AppHelperили псевдоним Requestдоступно через:

use Illuminate\Support\Facades\Request;

Который должен позволять использование Request::ajax() и аналогичные функции.

В качестве альтернативы, вы можете передать $request объект, который уже доступен из любого метода контроллера, из вашего MediaController функция index(), лайк:

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() должно работать нормально.

Другие вопросы по тегам