2016-04-14 29 views
2

Bazı verileri güncellemek için laravel'de bir form oluşturmaya çalışıyorum.laravel formu yanlış eylem üretiyor url/route hatası

{{ Form::model($sensor, array('action' => '[email protected]', $sensor->s_id)) }}  

$ sensörü bu şekilde denetleyicisinden görünümüne göndermek edilir:

return view('settings.sensors.edit')->with('sensor', App\Sensor::find($sensorId)) 

Ben bir model veri ile formu doldurmak için bıçak şablonunda aşağıdaki kullanarak başladı Belge, Form :: open'i kullanmam gerekip gerekmediğimi açıklığa kavuşturmamakla birlikte, form açık etiketi zaten oluşturulmuştu, bu yüzden bunun yeterli olacağını düşündüm. Benim yolları ise

Bunları yolları vardır:

Route::get('/settings/sensors/edit/{sensorId}',['as' => 'sensor.edit', 'uses' => '[email protected]']); 
Route::post('/settings/sensors/edit/{sensorId}',['as' => 'sensor.edit', 'uses' => '[email protected]']); 

Ben http://localhost:8000/settings/sensors/edit/105 gibi bir url giderek formu erişebilir, modelin verilerle Önceden dolduruluyor harika çalıştı.

Kullanmakta olduğum sorun, gönder düğmesinin çalıştığıydı. http://localhost:8000/settings/sensors/edit/%7BsensorId%7D 'a gönderir Açıkçası, sensorId parametresi düzgün şekilde değiştirilmiyordu. görünüyor

tanımlanmamış Rota [http://localhost:8000/settings/sensors/edit/105]: Şimdi sayfasını açtığınızda

{{ Form::model($sensor, array('route' => route('sensor.edit',$sensor->s_id)), $sensor->s_id) }}  

, ben doğrudan bu hatayı alıyorum:

Bazı googling sonra buna Formu :: modeli işlevi çağrısını yeniden yazdı garip, rotalarda değişiklik yapmadığımdan ve bu URL için tanımlanmış bir rota var. Nereye gittiğime dair bir fikrin var mı?

cevap

1

Temelde rota çağrısını kopyalamaktasınız. Form::model($sensor, array('route' =>'u yaptığınızda, Laravel zaten adlandırılmış bir rotaya erişmeye çalıştığınızı biliyor ve bir rota adı bekliyor. Bu yüzden, route(...)'u yaptığınızda, ilk önce bu aramaya adlandırılmış bir rota aramaya çalışmadan önce o rota çağrısını dönüştürür. Başka bir deyişle, http://localhost:8000/settings/sensors/edit/105 numaralı sayfanın bulunmadığından şikayet etmiyor - as adı gibi bir yolun bulunmadığından şikayet ediyor.

Bunu kaldırın ve yerine bir yol adı ve bunun yerine parametre ile değiştirin. O zaman da böyle ekstra $sensor->s_id kurtulabilirsiniz:

{{ Form::model($sensor, array('route' => array('sensor.edit', $sensor->s_id))) }} 
+0

sayesinde, gerçekten benim sorun çözüldü – ErikL