Включить различные переменные в некоторые представления, проходящие через контроллер - PullRequest
0 голосов
/ 18 января 2019

Я новичок в Laravel , и я начал свой первый проект ( с Laravel 5.7).
У меня есть некоторые переменные, которые я хотел бы использовать в каждом представлении.

В общем, я создаю, например, файл config.php, в который я помещаю свои переменные и использую их на каждой странице (очевидно, включая config.php на всех страницах).

Но, с Laravel , где я могу поместить эти переменные?
А как мне их использовать во всех видах?

Это мой web.php :

Route::get('/task','TaskController@index');
Route::get('/task/insert','TaskController@setInsertTask');
Route::get('/task/list','TaskController@getTaskList');

А в TaskController :

class TaskController extends Controller
{
    public function index(){
        return view('task.index');
    }

    public function setInsertTask(){
        return view('task.insert');
    }

   public function getTaskList(){
        return view('task.list');
    }
}

Теперь я попытался поместить переменные в TaskController следующим образом:

class TicketController extends Controller
{
    private $titlePage1 = "Task manager";
    private $titlePage2 = "Task manager insert";

    public function index(){
        return view('task.index',[
        'titlePage' => $this->titlePage1
    ]);
    }

    public function setInsertTask(){
    return view('task.insert',[
        'titlePage' => $this->titlePage2
    ]);
    }

   public function getTaskList(){
    return view('task.list',[
        'titlePage' => $this->titlePage1
    ]);
    }
}

И в представлении я вставил что-то вроде этого:

@extends('layout.layout')

@section('content')
    <h1>{{ $titlePage }}</h1>
@endsection

Но я не думаю, что это лучшее решение, и мне это не нравится.

В этом проекте я хотел бы использовать эту переменную, потому что:
1. Я хотел бы управлять тремя различными программами, связанными друг с другом (например, логин для пользователей, логин для администратора, логин для техников), у них одна и та же база данных, а одна область мала. Итак, для каждой области мне нравится печатать разные заголовки.

2. На страницах есть некоторое статическое слово, поэтому я создам массив со всеми словами таким образом, чтобы концентрировать все статические слова.

3. Как и титульный лист, мне бы хотелось того же с меню. Различные меню для разных областей управляются в одном файле в php (не в html).

4. Те же переменные, которые я хотел бы использовать в других контроллерах.

Я много искал, но не могу найти лучший способ включить общую переменную в некоторые представления.

Может кто-нибудь мне помочь? Большое спасибо.

Ответы [ 3 ]

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

Вы можете сделать это, используя BaseController

class BaseController extends Controller
{
  public function __construct()
  {
  $titlePage1 = "Task manager";
  $titlePage2 = "Task manager insert";

  View::share(['titlePage1' => $titlePage1, 'titlePage2' => $titlePage2 ]);
 }
}

Вы можете получить к нему доступ в любом представлении {{$titlePage1}} и {{$titlePage2}}

Вы также можете выполнить то же самое с AppServiceProvider В boot() из AppServiceProvider добавьте следующий код.

public function boot() {
  $titlePage1 = "Task manager";
  $titlePage2 = "Task manager insert";

  View::share(['titlePage1' => $titlePage1, 'titlePage2' => $titlePage2 ]);
}
0 голосов
/ 18 января 2019

Вы можете поделиться переменными для всех представлений с View::share в AppServiceProvider

Я ответил на другой вопрос. Для подробной информации посетите: ссылка

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

Да, вы можете использовать переменные, определенные в .env на маршруте

например в .env

name=test

Вы можете получить его как env ('name')

читать здесь

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