2017-02-07 3 views
0

Ich habe folgende Ansicht (main.php), die zwei getrennte Formen enthält, die auf dem gleichen Weg schreiben:Wie Sie mehrere Formulare mit SlimFramework auf dieselbe Route buchen?

<form class="form" id="first_form" action="{{ urlFor('main.post') }}" method="post"> 
    // form data 
</form> 

<form class="form" id="second_form" action="{{ urlFor('main.post') }}" method="post"> 
    // form data 
</form> 

Hier ist die Route, eine Logik, die diese Ansicht und auch post die Formulardaten rendert:

$app->get('/main', function() use ($app) { 
    $app->render('main.php'); 
})->name('main'); 

$app->post('/main', function() use ($app) { 
    // do something 
})->name('main.post'); 

Jetzt in meiner $app->post Methode, würde Ich mag, zwischen denen unterscheiden Form entsprechend getrennte Logik vorgelegt wurde und tun, etwa so:

$app->post('/main', function() use ($app) { 
    if(first form was submitted) { 
     // do something 
    } else if(second form was submitted){ 
     // do something else 
    } 
})->name('main.post'); 

Muss das, was ich zu erreichen versuche, Middleware nutzen? Wenn nicht, welche Logik muss ich implementieren, um diese scheinbar einfache Aufgabe zu erreichen?

Antwort

1

Sie könnten ein verstecktes Feld in Ihr Formular einfügen, das angibt, welches Formular gesendet wurde.

<form class="form" id="first_form" action="{{ urlFor('main.post') }}" method="post"> 
    <input type="hidden" name="which" value="first_form"> 
    // form data 
</form> 

<form class="form" id="second_form" action="{{ urlFor('main.post') }}" method="post"> 
    <input type="hidden" name="which" value="second_form"> 
    // form data 
</form> 

Dann in Ihrer Route überprüfen Sie den Wert von which Eingabe.

$app->post('/main', function() use ($app) { 
    $which = $app->request()->post('which') 
    if ('first_form' === $which) { 
     // do something 
    } else if ('second_form' === $which){ 
     // do something else 
    } 
})->name('main.post'); 
+0

Sie wissen ... manchmal als ein Entwickler, seine natürliche Fixierung mit dem denkenden Komplex, der uns zurückhält. so einfach, danke Kumpel. –

Verwandte Themen