2016-03-18 4 views
2

Bitte beachten Sie diese Methode in diesem Controller anzuzeigen:Best Practice viele Arrays und lange Variablen übergeben in Laravel

public function showPage() { 

    $settings = [ 
     'show_box' => 'Show box', 
     'coolstuff' => 'Some text', 
     'ss_text' => 'Anotehr text', 
     'blur_haha' => 'Nice text', 
     'nice_s' => 'Nice hahahaha', 
    ]; 

    $text = [ 
     'hey' => 'Show box', 
     'nice_text' => 'Some text', 
     'yes_text' => 'Anotehr text', 
     'no_hahaaha' => 'Nice text', 
     'cool_text' => 'Nice hahahaha', 
    ]; 

    return view('page', compact('settings'); 
} 

Wie Sie sehen können, vor allem die Methode Variablendeklarationen für Arrays enthält. Nun sagen wir, es gibt 10 Variablen wie diese.

Was wäre die beste Vorgehensweise, dies zu tun? Es ist nichts falsch daran, aber es ist nicht ganz sauber. Es ist sehr voll.

Ich fragte mich, ob ich sie vielleicht woanders deklarieren und die Variable an den Controller übergeben könnte.

Vielen Dank.

+1

Sind sie statisch? Wenn ja, definieren Sie sie in einer Konfigurationsdatei. – jszobody

+0

Ja, sie sind statisch. Danke, ich könnte das einfach machen. –

+0

Danke. Ich kann deine Antwort akzeptieren, wenn du sie als Antwort postest. –

Antwort

1

Wenn Ihre Arrays und Variablen statisch sind, sollten Sie Ihre Controller (oder PHP-Klassen) nicht überladen.

Ich würde eine Konfigurationsdatei definieren. Sprich config/settings.php zum Beispiel:

// config/settings.php 
return [ 
    'show_box' => 'Show box', 
    'coolstuff' => 'Some text', 
    'ss_text' => 'Anotehr text', 
    'blur_haha' => 'Nice text', 
    'nice_s' => 'Nice hahahaha', 
]; 

Jetzt in Ihrem Controller Sie dies nur tun können:

return view('page', ['settings' => Config::get('settings')]; 

Wenn Ihr Controller überprüfen, fügen muß, oder ändern Sie ein paar Einstellungen zuerst:

$settings = array_merge(Config::get('settings'), [ 
    "new" => "some text", 
    "show_box" => "change this value" 
]); 
return view('page', ['settings' => $settings]);