简体   繁体   中英

Second independant form inside another form in laravel

I'm trying to make something that I'm not sure if is possible and how exactly can happen.

What I want is to have one table which is in form and one addition form inside. The depending of which button I hit to perform different actions in controller. Here is what I have so far

my blade

{{ Form::open(array('url' => 'admin/inv')) }}
      {{ Form::open(array('url' => 'admin/inv/multiPC')) }}
      <table class="table table-bordered">
            <tbody>
            <tr> 
                <td><input type="checkbox" name="delete[]" value="{{ $product->product_id }}"> </td>
                <td><strong>${{ $product->price }}</strong><input type="number" name='price[]'  class="form-control"/></td>
            </tr>
            </tbody>
      </table>
  <button type="submit" href="{{ URL::to('/admin/del') }}?_token={{ csrf_token() }}">Delete</button>
  <button type="submit" href="{{ URL::to('/admin/multiPC') }}?_token={{ csrf_token() }}">Update Price</button>       
     {{ Form::close() }}
{{ Form::close() }}    

Those are both functions

public function pDelete() {


     $delete = Input::only('delete')['delete'];
     $pDel = Product::whereIn('product_id', $delete)->delete();

     return Redirect::to('/admin/inv')->with('message', 'Product(s) deleted.');
}   

public function priceUpdate() {


     $pchanges->price = Input::only('price')['price'];
     $pChange = Product::whereIn('product_id', $pchanges);

     $pChange->save();
     return Redirect::to('/admin/inv')->with('message', 'Product(s) price changed.');
}

And route

Route::post('/admin/inv', ['uses' => 'AdminController@pDelete', 'before' => 'csrf|admin']);
Route::post ('/admin/inv/multiPC', ['uses' => 'AdminController@priceUpdate', 'before' => 'csrf|admin'])

What happen is when I check product and hit Delete button product is deleted. But when I input price in the input field for price and hit Update Price page only refreshed and price isn't changed.

Is there a way to accomplish this without using JS?

try this type of approach

<form method="POST" class="form-horizontal" action="myapplication/personal">
  <input type="number" name='price[]'  class="form-control"/>
  <input type="checkbox" name="delete[]" value="{{ $product->product_id }}">

  <button type="submit" name="step[0]" value="Delete">Delete</button>
  <button type="submit" name="step[1]" value="Update">Update Price</button>  
</form>     

from your controller check the value of step and do as you like

public function formProcess() {
 $action = request::get('step'); // i forgot laravel 4 syntex. used laravel 5 instead here :D

 if($action == 'Delete')
 {
  // do delete operation
 }
 else
 {
   //do update operation
 }

} 

hope this helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM