Попытка получить доступ к псевдониму внутри пользовательского помощника выдает сообщение «Не найдено».Ларавел 5.7 - PullRequest
0 голосов
/ 28 января 2019

Для моего приложения я создал функцию, которая возвращает либо представление, либо уже визуализированное представление внутри некоторого 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 Ответ

0 голосов
/ 28 января 2019

Я не думаю, что

use Request;

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

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

...