2013-09-16 23 views
5

Şu anda yakıt maliyetimi yönetmek için bir proje üzerinde çalışıyorum. Artık 2 parametresini Form::open() içinde geçmeye çalışıyorum, ne yazık ki çalışmıyor. İki parametreyi bir kerede geçmem gerektiğini düşündüğüm nedeni, URL'mimin Sitename/car/{id}/tank/{id} nedenidir?Laravel 4 Form geçirme 2 parametresi

Parameter "tank" for route "car.{id}.tank.update" must match "[^/]++" ("" given) to generate a corresponding URL.

: Aşağıdaki hata

edit.blade.php

Form::open(array('class' => 'form-horizontal', 'method' => 'put', 'action' => array('[email protected]', array($aid, $id)))) 

Sorun Kod

'action' => array('[email protected]', array($aid, $id) 

-Sonuçlar

TankController.php

public function edit($id, $tid) 
{ 
    $tank = Tank::find($tid); 
    if(!$tank) return Redirect::action('[email protected]'); 
    return View::make('Tank.edit', $tank)->with('aid', $id); 
} 
public function update($id, $tid) 
{ 
    $validation = Validator::make(Input::all(), Tank::$rules); 
    if($validation->passes()){ 
     $tank = Tank::find($tid); 
     $tank->kmstand   = Input::get('kmstand'); 
     $tank->volume   = Input::get('volume'); 
     $tank->prijstankbeurt = Input::get('prijstankbeurt'); 
     $tank->datumtank  = Input::get('datumtank'); 
     $tank->save(); 

     return Redirect::action('[email protected]', $id)->with('success', 'Tankbeurt succesvol aangepast'); 
    } else return Redirect::action('[email protected]', $id)->withErrors($validation); 
} 

Route.php

Route::resource('car', 'CarController'); 
Route::resource('car/{id}/tank', 'TankController'); 
Route::controller('/', 'UserController'); 

-url Yapısı SITENAME/araç/2/Tank/2/düzenle

Ayrıca api belgelerine de baktım ama hiçbir şey bulamadım. peşin http://laravel.com/api/source-class-Illuminate.Html.FormBuilder.html

Teşekkür

cevap

16

bu deneyin:

Form::open(array('class' => 'form-horizontal', 'method' => 'put', 'action' => array('[email protected]', $aid, $id))) 
3

Bu

Form::open (array ('method'=>'put', 'route'=>array($routeName [,params...])) 

bir örnek en iyi çözümdür:

{{ Form::open(array('route' => array('admin.myroute', $object->id))) }} 

https://github.com/laravel/framework/issues/491

+1

. Muchas gracias. – racl101

+0

evet, bu en iyi yoldur. Teşekkürler –

+0

Ancak, örneğinizde yalnızca bir parametreyi geçiriyorsunuz. Bu şekilde iki parametreyi geçmek 5.2'de çalışmaz. –

0

deneyin sizin bıçak kullanmak: Bu aynı zamanda laravel 5.1 üzerinde çalışır

For Laravel 5.1

{!! Form::open([ 
      'route' => ['car.tank.update', $car->id, $tank->id], 
      'method' => 'put', 
      'class' => 'form-horizontal' 
       ]) 
!!} 
+0

Laravel 5.x'te form sınıfı bırakılır. Yine de bu HTML yardımcılarını 'Form' gibi kullanmak istiyorsanız, topluluk kaynaklı değiştirme [laravelcollective HTML] (https://laravelcollective.com/docs/master/html) sınıfını kullanabilirsiniz.Kaynak: [Form ve HTML Yardımcılarını Ara] (https://laravel.com/docs/master/upgrade#upgrade-5.0) – SaschaDens

+0

Laravel Kollektif 5.2'de çalışmaz. –