2016-07-20 10 views
0

Ich habe hier anscheinend ein inkonsistentes Verhalten ... Ich arbeite an einigen Tutorials, die sich mit der Anzeige eines Benutzerprofils und der anschließenden Bearbeitung und Aktualisierung des Profils befassen.Warum ist {!! Html :: linkRoute .... !!} ist selektiv? (laravel 5.2)

Das Problem ist, dass der HTML-Helfer scheint nicht die richtigen Links hinter den Schaltflächen zu generieren. Wenn ich den Mauszeiger über die Schaltflächen halte, bekomme ich etwas anderes:

Zum Beispiel, auf meinem Edit-Blade, soll die SAVE-Taste zur Update-Route führen. Wenn ich über die Schaltfläche schwebe, wird angezeigt, dass es http://localhost/dev.rentid.co.nz/public/user/2 ist, wenn ich es erwartet habe http://localhost/dev.rentid.co.nz/public/user/2/update

Benötigt Html::linkRoute einige zusätzliche Parameter?

Meine Show Klinge

{!! Html::linkRoute('user.edit', 'Edit', array($thisUser->id), array('class' => 'btn btn-primary btn-block')) !!} 
    {!! Html::linkRoute('user.destroy', 'Delete', array($thisUser->id), array('class' => 'btn btn-danger btn-block')) !!} 

Meine bearbeiten Klinge:

{!! Form::model($thisUser, ['route' => ['user.update', $thisUser->id], 'method' => 'PUT']) !!} 
... 
{!! Html::linkRoute('user.show', 'Cancel', array($thisUser->id), array('class' => 'btn btn-danger btn-block')) !!} 
{!! Html::linkRoute('user.update', 'Save', array($thisUser->id), array('class' => 'btn btn-success btn-block')) !!} 
... 
{{ Form::close() }} 

Mein routes.php

... 
Route::resource('/user', 'UserController'); 
.... 

, die dies erzeugt:

GET|HEAD | user     | user.index | rentid\Http\Controllers\[email protected] 
POST  | user     | user.store | rentid\Http\Controllers\[email protected] 
GET|HEAD | user/create    | user.create | rentid\Http\Controllers\[email protected] 
DELETE | user/{user}    | user.destroy | rentid\Http\Controllers\[email protected] 
PUT|PATCH | user/{user}    | user.update | rentid\Http\Controllers\[email protected] 
GET|HEAD | user/{user}    | user.show | rentid\Http\Controllers\[email protected] 
GET|HEAD | user/{user}/edit  | user.edit | rentid\Http\Controllers\[email protected] 

Antwort

1

Die Ressource-Routing verwendet REST, bedeutet dies, dass die Steuerung der angeforderten URL basierend auf der Art der Anforderung behandelt.

Wie Sie in Ihren Routen Liste angezeigt haben, die Route user/{user} mit einem DELETE Anfrage wird durch das Verfahren zerstört behandelt werden, die Route Benutzer/{user} mit einem PUT oder PATCH Anfrage wird von der Update-Methode behandelt, so dass Ihre URL http://localhost/dev.rentid.co.nz/public/user/2 korrekt ist. Ihr Update-Formular ist in Ordnung, aber für das Löschen müssen Sie auch ein Formular verwenden, um die Anfrage zu stellen.

{!! Form::open(['method' => 'DELETE', 'route' => ['user.destroy', $thisUser->id]]) !!} 
<button type="submit">Delete</button> 
{!! Form::close() !!}