2016-11-02 5 views
0

Ich versuche etwas zu machen, von dem ich nicht sicher bin, ob es möglich ist und wie genau es passieren kann.Zweites unabhängiges Formular in einem anderen Formular in Laravel

Was ich will, ist eine Tabelle, die in Form und eine zusätzliche Form innerhalb ist. Je nachdem welche Taste ich drücke, um verschiedene Aktionen im Controller auszuführen. Hier ist, was ich bisher

meine Klinge

{{ 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() }}  

Die sind beide Funktionen

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.'); 
} 

und Strecke

Route::post('/admin/inv', ['uses' => '[email protected]', 'before' => 'csrf|admin']); 
Route::post ('/admin/inv/multiPC', ['uses' => '[email protected]', 'before' => 'csrf|admin']) 

Was passiert, wenn ich Artikel an und traf Delete Button Produkt ist gelöscht. Aber wenn ich Preis in das Eingabefeld für Preis eingeben und Update Price Seite nur aktualisiert und Preis wird nicht geändert.

Gibt es eine Möglichkeit, dies ohne JS zu erreichen?

+0

Ich denke, es sollte möglich sein und in einige Browser ist es. Einige andere Browser lehnen die verschachtelten Formulare jedoch ab. Ich glaube Chrome und IE haben Probleme damit. – CptMisery

+2

soweit ich weiß verschachtelte Form ist nicht erlaubt. – reza

+0

Warum können Sie nicht beide Logiken in nur einer Methode schreiben, anstatt zwei Formulare zu verwenden? – iCoders

Antwort

1

versuchen, diese Art von Ansatz

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

von Ihrem Controller den Wert von Schritt zu überprüfen und tun, wie Sie

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 
} 

} 

Hoffnung wie dies hilft

Verwandte Themen