Как объединить две переменные в классе контроллера и передать его всем представлениям класса в laravel - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь объединить две специфические переменные класса в контроллере и передать их всем представлениям, не повторяя одну и ту же переменную в каждом методе контроллера.

Пример кода:

    class ProductsController extends Controller
{
    private $global_path; //Comes from .env
    private $sub_folder = '/products_folder';

    public function __construct()
    {
        //Frontend Image Path - to pass into all views
        $frontend_path = $this->global_path.$this->sub_folder;

    }
}

Iхочу передать '$ frontend_path' всем блейд-представлениям, созданным в контроллере, не повторяя его в каждом отдельном методе, например

return view('example_view', compact('frontend_path');

Я попробовал View :: share ..., но не смог этого сделать.

Переменная $ sub_folder не имеет одинакового значения во всех контроллерах.

Есть ли способ сделать это возможным?

1 Ответ

1 голос
/ 16 марта 2019

Для вашего кода, я думаю, вы можете изменить его на

class ProductsController extends Controller
{
   public $frontend_path;

   public function __construct() {
      $this->frontend_path = env('GLOBAL_PATH') . '/products_folder';
   }

   public function index()
   {
       $x = $this->frontend_path;
       return view('index', compact('x'));
   }

}

и используйте его как $this->frontend_path или как показано ниже SELF::$frontend_path

class ProductsController extends Controller
{
    public static $frontend_path;

    public function __construct() {
        SELF::$frontend_path = env('GLOBAL_PATH') . '/products_folder';
    }

     public function index()
     {
         $x = SELF::$frontend_path;
         return view('index', compact('x'));
     }
}

или

class ProductsController extends Controller
{
    public static $frontend_path;

    public function __construct() {
        SELF::$frontend_path = env('GLOBAL_PATH') . '/products_folder';
        view()->share('frontend_path', SELF::$frontend_path);
    }

    public function index()
    {
        return view('index');
    }
}

в поле зрения

{{ $frontend_path }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...