Попытка получить доступ к псевдониму внутри пользовательского помощника выдает сообщение «Не найдено». Ларавел 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 или в stackoverflow.

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]