Laravel: Wo können globale Daten und Konstanten gespeichert werden?

Ich habe gerade angefangen zu arbeiten mit Laravel. Ich brauche zum umschreiben einer ganzen system habe ich vor einigen Jahren mit Laravel 4 als Basis-framework. In meinem alten system, das ich verwenden, um einen constant.php Datei mit einige Konstanten deklariert, und ein globals.php Datei, die enthalten viele array-sets (Zum Beispiel, Kategorien, Status, Art des events, langs, etc.). Dadurch, ich könnte so etwas wie

foreach ( $langs as $code => $domain ) {
    //Some stuff
}

irgendwo in meinem app.

Meine Frage ist, wie kann ich das speichern, dass Informationen, die in der so genannten "laravel Weg". Ich habe versucht, mit irgendeiner Art von Objekt zu speichern diese info, diese Einstellung als service und erstellen für Sie eine Fassade:

app/libraries/Project/Constants.php

namespace PJ;

class Constants {

    public static $langs = [
            'es' => 'www.domain.es',
            'en' => 'www.domain.us',
            'uk' => 'www.domain.uk',
            'br' => 'www.domain.br',
            'it' => 'www.domain.it',
            'de' => 'www.domain.de',
            'fr' => 'www.domain.fr'
        ];

}

app/libraries/Project/ConstantsServiceProvider.php

namespace PJ;

use Illuminate\Support\ServiceProvider;

class ConstantsServiceProvider extends ServiceProvider {
    public function register() {
        $this->app->singleton('PJConstants', function() {
            return new Constants;
        });
    }
}

app/libraries/Project/ConstantsFacade.php

namespace PJ;

use Illuminate\Support\Facades\Facade;

class ConstantsFacade extends Facade {
    protected static function getFacadeAccessor() { 
        return 'PJConstants';
    }
}

Komponist.json

"psr-4": {
     "PJ\\": "app/libraries/Project"
},

und so habe ich Zugriff auf die Eigenschaft als PJ\Constants::$langs.

Dies funktioniert, aber ich bezweifle, es ist die effizienteste /Richtige Weg, es zu tun. Ich meine, es ist der richtige Weg zu "propagieren" eine variable erstellen, während Service-Provider und Fassaden und alle solche Sachen? Oder wo soll ich diese Daten?

Vielen Dank für jeden Rat.

EDIT # 01

Daten möchte ich weitergeben an alle Controller und views können direkt festgelegt werden, in Skript, wie in dem Beispiel am Anfang von meinem post, aber es kann auch generiert werden, dinamically, aus einer Datenbank zum Beispiel. Diese Daten könnten eine Liste von Kategorien. Ich brauche Sie in allen Ansichten zu generieren, die eine Navigationsleiste, aber ich brauche Sie, um zu definieren, einige routing-Muster (wie z.B. /Kategorie/Unterkategorie/Produkt), und auch zu analysieren, einige Infos in mehreren Controllern (Wie "get info" aus der Kategorie, hält X-Produkt).

Mein array ist so etwas wie:

$categories = [
    1 => ['name' => 'General', 'parent' => 0, 'description' => 'Lorem ipsum...'],
    2 => ['name' => 'Nature', 'parent' => 0, 'description' => 'Lorem ipsum...'],
    3 => ['name' => 'World', 'parent' => 0, 'description' => 'Lorem ipsum...'],
    4 => ['name' => 'Animals', 'parent' => 2, 'description' => 'Lorem ipsum...']
]

Nur als Beispiel. Index ist die id der Kategorie ein, und der Wert ist info Zusammenhang mit die Kategorie.

Brauche ich das array auch in allen Controllern und Views.

Also, wenn ich speichern Sie es als eine Config-variable, ist es ok? Oder wie könnte ich sonst speichert diese Daten? Was wäre eine beste und semantisch richtige Weg?

Dank

InformationsquelleAutor der Frage Marco Madueño Mejía | 2014-11-10

Schreibe einen Kommentar