2013-07-03 19 views
9

Sto costruendo un CRUD davvero semplice in laravel solo per imparare qualcosa su questo framework. Funziona tutto come un incantesimo ma non riesco a far funzionare correttamente la funzione di aggiornamento di un controller.Laravel: associazione modello modulo e errore controller risorse

Ecco la mia situazione:

1) ho costruire un controller di risorse utilizzando il comando artigianale.

2) costruisco una vista modulo con lo stelo e aprire il modulo con questo codice:

<!-- Form --> 
@if($mode=="edit") 
    {{ Form::model($task, array('route'=>array('task.update',$task->id),'files'=>true)) }} 
@else 
    {{ Form::open(array('route'=>'task.store','files'=>true)) }} 
@endif 

E le grandi opere e tutti i campi vengono riempiti con i dati corretti. La Genera URL dell'azione del modulo è:

http://localhost/mysite/task/2 

Il problema è che quando presento questa forma ottengo questo errore:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 

Qualcuno riesce a capire perché? Posso aiutarti con più informazioni?

risposta

9

È necessario 'metodo' => 'mettere'.

{{ Form::model($task, array('route' => array('task.update', $task->id), 'files' => true, 'method' => 'PUT')) }}

Come si può vedere qui.

http://laravel.com/docs/controllers#resource-controllers

Verb:  PUT/PATCH 
Path:  /resource/{id} 
action: update 
route: resource.update 

EDIT: Per attivare l'aggiornamento() - azione è necessario inviare un PUT o PATCH-richiesta al percorso resource.update, nel tuo caso task.update.

0

Si è verificato un problema con l'azione modulo. Supponendo di aver un percorso come questo:

Route::post('task/update/{id}, function() 
{ 

}); 

Poi, il modello di formulario-bound dovrebbe essere:

{{ Form::model($task, array('url'=>array('task/update',$task->id),'files'=>true)) }} 
0

L'unico errore nel codice è che non è stato passato PUTOR PATCH come metodo HTTP per l'invio del modulo al server.

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException viene attivato in tali stati.

sarà una forma modello di demo come

Form::model($name_model, array('action' => array('[email protected]', $argument), 'files' => true, 'method' => 'PUT')) 

o con il nome percorso come

Form::model($name_model, array('route' => array('route.name', $argument), 'files' => true, 'method' => 'PUT')) 
Problemi correlati