2016-07-14 7 views
1

Ich habe verwendet, wenn die Bedingungen in href und in a blockieren.Laravel View - bessere Lesbarkeit

Wie würden Sie den Code für die Lesbarkeit sauberer machen?

+0

Vielleicht eine URL-Eigenschaft (über einen Accessor vielleicht) auf Ihr '$ status'-Objekt.' Href = "{{$ status-> toggleUrl}}" ' –

+0

@BenSwinburne Ich denke, das bedeutet, ich müsste gehen durch die $ status-Schleife in einem Repo oder Modell und fügen Sie einen href-Link hinzu –

+0

Wenn '$ status' sich auf ein redegewandtes Modell bezieht, können Sie einen Accessor verwenden (https://laravel.com/docs/master/eloquent-mutators#accessors -und-Mutatoren) zu generieren Sie eine Eigenschaft im laufenden Betrieb. –

Antwort

2

diesen Status Angenommen ist ein Modell (auch wenn Sie es auf, was auch immer setzen könnte es ist, die einen Status hat).

+0

Ist es möglich, es irgendwie global zu machen? Einige Modelle haben auch aktiviert/deaktiviert - zum Beispiel "$ customer-> enabled" –

+0

Schreibe die Funktionalität in ein Merkmal oder einen Basis-Controller. Ich werde ein Merkmalsbeispiel hinzufügen. –

0

Verwenden Sie ternäre Operationen "?:" Anstelle von konventionellen if else-Anweisungen. Beziehen Sie sich auf Chagnes, die ich sonst mit ternären Operatoren ersetzt hätte.

<a type="button" class="btn btn-sm text-complete" href="/settings/statuses/{{$status->id}}/{{$status->enabled == 0 ? enable : disable }}"> 
{{$status->enabled == 0 ? enable : disable }} 
</a> 
1

Notwendigerweise eine subjektive Antwort, und ich persönlich bin ein Fan von Mikro-Ansichten, so dass ich vielleicht eine Unteransicht definieren, die ein Objekt übernimmt die in der Lage sein, seinen Status geändert zu haben.

// status-display.blade.php 
@if ($object instanceof StatusInterface) 
    @if ($object->enabled) 
     Disable 
    @else 
     Enable 
    @endif 
@else 
    Unknown 
@endif 

// foo.blade.php 
<a type="button" class="btn btn-sm text-complete" href="/settings/statuses/{{$status->id}}/"> 
    @include('status-display', [ 'object' => $status ]) 
</a> 

// bar.blade.php 
@include('status-display', [ 'object' => $customer ]) 

hat den Vorteil, dass für die Anzeige Einzelpunktwechsel mit dem „Status“ zugeordnet der Sache sowie Misch-und-Matching, wo diese Statusanzeige im Layout angezeigt wird. (Dh, Sie könnten nicht nur wollen, dass es in einem <a>, aber vielleicht auch ein <div> oder ein <span>.

+0

Das ist wirklich eine gute Idee, aber '$ status' (vom Modell) Name könnte variieren, aber die Logik ist die gleiche Aktivieren/Deaktivieren. Zum Beispiel könnte ich ein Kundenmodell haben, das auch '$ customer-> enabled' enthält - wie würdest du das machen? –

+0

Ich würde die Klasse eine 'Schnittstelle' implementieren lassen, die anzeigt, dass sie das' enabled'-Merkmal hat, dann können Sie alles übergeben, das dieses Verhalten unterstützt. – bishop