2016-04-05 11 views
0

Ich bin ziemlich neu zu programmieren und ich habe eine einfache Frage über das MVC-Muster. Ich begann Laravel zu lernen, das Ansichten, Controller und Modelle hat.MVC - Kann ich Wenns in Sichten

Meine Frage ist: Kann ich if s wie dieses in meinen Ansichten haben?

<option value="dayofweek" {{Input::get('group') == 'dayofweek' ? 'selected' : ''}}>Day Of week </option>

Ich habe mehr <option> s in meinem <select> und es irgendwie hässlich aussieht, vor allem, wenn ich zusätzliche Erklärung der Bedingung Input::has('group') && ... hinzuzufügen.

Sollte ich das select mit seinen Optionen in meinem Controller erstellen, da ich dort die gleichen Daten habe und alle Überprüfungen durchführe und dann die Ansicht ausgewählte und nicht ausgewählte Optionen rendern lasse?

PS: Ich weiß, ich kann, aber sollte ich?

Antwort

2

Ja, Sie können if Aussagen aus Ihrer Sicht tun. Es wäre Wahnsinn, das nicht zu tun, da dies bedeuten würde, dass Ihre Ansichten völlig statisch wären, was ziemlich unpraktisch ist.

jedoch, ist es wahrscheinlich eine schlechte Idee, diese Aussagen hängen von so etwas wie Input zu haben. Ihre Ansichten sollten mehr entkoppelten als das sein. Stellen Sie sich vor, dass Sie eine bestimmte Ansicht in verschiedenen Szenarien verwenden werden; Mit anderen Worten, viele verschiedene Controller möchten möglicherweise dieselbe Ansicht rendern. Es gibt keine Garantie, dass ein Input in jedem dieser Szenarien verwendet wurde, oder was diese Eingabe speziell aufgerufen wurde. Der Controller sollte die direkte Eingabe verarbeiten, die Ansicht sollte eine Variable wie $currentGroup empfangen, die der Controller festlegt. Sie möchten eine gewisse Isolierung zwischen Eingang und Ausgang herstellen und diese nicht sofort miteinander verbinden, um die Wiederverwendbarkeit und Flexibilität zu erhöhen.

0

Sie mögen unten tun können,

<select> 
     @foreach ($dropItems as $item) 
      {{-- */ 
       $selected = ''; 
       if (Input::has('group') && Input::get('group') == $item) { 
        $selected = 'selected'; 
       } 
      /* --}} 
      <option value="dayofweek" {{ $selected }}>Day Of week </option> 
     @endforeach 
    </select> 

OR können Sie

{!! Form::select('day_drop_down', $daysArray , (Input::has('group') && Input::get('group') == '')?Input::get('group'):0, ['class' => 'form-control', 'id'=>'productTemplate']) !!} 
+0

Wahrscheinlich hätte ich Laravel erwähnt und hätte meine Frage stellen sollen, ohne Sprache/Framework anzugeben. Ich frage nicht, wie ich das machen kann. Was ich frage ist, sollte ich das im Controller oder in der Ansicht tun? :) Ich habe beide Sachen in einigen Tutorials gesehen.Ich möchte wissen, was die besten Praktiken sind. Vielen Dank. –

0

Die Frage verwenden ist, wo sich der Controller befinden? Machst du serverseitige Programmierung? Dann befinden sich der Controller und das Modell auf dem Server.

Wenn Sie clientseitig programmieren, dann leben alle drei Ebenen im Browser HTML/CSS (die Ansicht), Javascript (Controller und Modell).

Wenn die später dann sollten Sie Ihre HTML sauber haben:

<option value="dayofweek">Day Of week </option> 

Und nur Ihre Javascript (in der Steuerung) funktioniert die Manipulation:

val = get('group') == 'dayofweek' ? 'selected' : ''}} 
$('dayofweek').val = val; 

(leider das Javascript wahrscheinlich falsch ist. .. aber Sie bekommen die Idee.)

Verwandte Themen