2013-07-03 20 views
9

Sadece bu çerçevede hakkında bir şeyler öğrenmek için laravel gerçekten basit CRUD inşa ediyorum. Her şey bir cazibe gibi çalışır ancak düzgün bir kontrolör işin güncelleme fonksiyonunu yapamazsınız. İştelaravel: Biçim modeli bağlama ve kaynak denetleyici hatası

benim durum:

1) Ben esnaf komutunu kullanarak bir kaynak denetleyicisi oluşturmak.

2) Ben bıçağı kullanarak bir form görünümü oluşturmak ve bu kod ile form açın: O inşaat büyük ve her saha sağ verilerle doldurulur

<!-- 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 

.

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 

Birisi neden anlayabiliyorum:

http://localhost/mysite/task/2 

sorun bu formu gönderdiğinizde bu hatayı alıyorum olmasıdır: formun işlemine URL'sidir oluşturmak? Daha fazla bilgi için size yardımcı olabilir miyim?

cevap

9

Sen 'yöntemi' => 'koymak' gerekiyor.

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

Burada görebileceğiniz gibi.

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

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

DÜZENLEME

: güncelleme tetikleyin() - eylem senin durumunda task.update yılında, rota resource.update bir PUT veya YAMA-sorgulama başlatır.

0

Form eylemi ile ilgili bir sorun var. Böyle bir rota varsayarsak:

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

}); 

Ardından, modeliniz bağlı formunun olmalıdır:

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

Kodunuzdaki tek hata sunucuya form gönderimine HTTP yöntemi olarak PUTor PATCH'i geçmedi olmasıdır.

Symfony \ Component \ HttpKernel \ İstisna \ MethodNotAllowedHttpException tür devletler üzerinde tetiklenir.

bir demo modeli formu

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

olarak veya

Form::model($name_model, array('route' => array('route.name', $argument), 'files' => true, 'method' => 'PUT')) 
olarak rota adıyla olacak
İlgili konular