Ich bin neu in Laravel und habe mein erstes Projekt gestartet ( mit Laravel 5.7).
Ich habe einige Variablen, die ich in jeder einzelnen Ansicht verwenden möchte.

Im Allgemeinen erstelle ich zum Beispiel eine config.php-Datei, in der ich meine Variablen ablege und auf allen Seiten verwende (offensichtlich einschließlich config.php auf allen Seiten).

Aber wo kann ich mit Laravel diese Variablen ablegen?
Und wie kann ich sie in allen Ansichten verwenden?

Dies ist meine web.php :

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

Und im 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');
    }
}

Jetzt habe ich versucht, die Variablen wie folgt in den TaskController einzufügen:

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
    ]);
    }
}

Und in der Ansicht habe ich so etwas eingefügt:

@extends('layout.layout')

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

Aber ich denke nicht, dass das die beste Lösung ist und ich mag es nicht.

In diesem Projekt möchte ich diese Variable verwenden, weil:
1. Ich möchte drei verschiedene miteinander verbundene Software verwalten (z. B. Login für Benutzer, Login für Administratoren, Login für Techniker), wenn sie dieselbe Datenbank haben und der einzelne Bereich klein ist. Daher möchte ich für jeden Bereich einen anderen Titel drucken.

2. Auf den Seiten gibt es einige statische Wörter, daher werde ich ein Array mit allen Wörtern erstellen, um alle statischen Wörter zu konzentrieren.

3. Wie auf der Titelseite möchte ich die gleichen Dinge mit einem Menü. Verschiedene Menüs für verschiedene Bereiche, die in einer einzigen Datei in PHP verwaltet werden (nicht in HTML).

4. Dieselben Variablen, die ich gerne in anderen Controllern verwenden möchte.

Ich habe viel gesucht, aber ich kann nicht finden, welche Methode am besten geeignet ist, um eine allgemeine Variable in einige Ansichten aufzunehmen.

Kann mir jemand helfen? Danke vielmals.

0
Giu 18 Jän. 2019 im 14:34

3 Antworten

Beste Antwort

Sie können Variablen für alle Ansichten mit View::share in AppServiceProvider freigeben.

Ich hatte in einer anderen Frage geantwortet. Weitere Informationen finden Sie unter: Link

1
FGDeveloper 18 Jän. 2019 im 15:04

Ja, Sie können die in der .env at route definierten Variablen verwenden

Zum Beispiel in .env

name=test

Sie können es als env ('Name') erhalten

Lies hier

1
Sanjit Bhardwaj 18 Jän. 2019 im 11:39

Sie können dies mit BaseController tun

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

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

Sie können in jeder Ansicht {{$titlePage1}} und {{$titlePage2}} darauf zugreifen.

Sie können dasselbe auch mit AppServiceProvider ausführen Fügen Sie in boot() von AppServiceProvider den folgenden Code hinzu.

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

  View::share(['titlePage1' => $titlePage1, 'titlePage2' => $titlePage2 ]);
}
1
Prashant Deshmukh..... 19 Jän. 2019 im 04:45