2014-09-04 4 views
1

i ont une forme avec les éléments suivantscomment soumettre un formulaire avec plusieurs valeurs

Nom de l'article Test 1
Test 2
Test 3

Dans le champ texte, le nom de l'entrée du champ gérer le nom du produit est 'nom_produit';

Comment traiterait-vous un tableau et insérer les noms des éléments suivants dans la base de données simultanément lorsqu'un utilisateur a frappé le bouton d'envoi ...

Ce que j'ai essayé mains sur ..

FORMULAIRE À MON AVIS

{{form::open(array('url' =>'batch', method=>'post'))}} 
    <input type= "hidden" name="product_name" value="{{order->product_name}} 
{{ form::close()}} 

contrôleur

public function postBatch(){ 

    $posted = Input::get(); 

    foreach($posted as $ke=> $value){ 
     $batch = new Batch; 
     $batch->product_name = $posted['product_name']; 
    } 

    $batch->save; 

} 

Resul ts J'ai eu de ce code

Après que je poste la forme que le 3ème élément apparaît dans ma base de données par exemple. Seulement 'test 3' apparaît dans ma base de données n'était pas sûr que tous les noms ont été postés donc j'ai mis une fonction pour compter les éléments insérés et après cette fonction j'ai appris qu'il compte 3 bt Je ne vois qu'un seul nom.

Ce que je veux savoir

Comment puis-je poster le formulaire et tous les noms de produits apparaîtrez après été affiché et enregistrer dans la base de données.

+0

vous créez objet lot dans la boucle donc après la fin de la boucle for un seul objet batch exsists at est le dernier dans le tableau $ posted. essayez donc de mettre '$ par lots> save()' l'intérieur de la boucle comme la dernière instruction :) –

+0

Après avoir placé $ par lots> save() dans la boucle à nouveau que le dernier élément « test3 » est Reoccurring – user3758351

Répondre

1

Si je comprends ce que vous essayez de faire, je serais repenser la logique un peu. Passez un tableau de products comme propriété de $order à votre vue afin qu'ils puissent être placés dans des entrées cachées séparées.

Vue:

{{form::open(array('url' =>'batch', method=>'post'))}} 
    @foreach($order->products as $product) 
     Input::hidden('products[]', $product->name); 
    @endforeach 
{{ form::close()}} 

Ensuite, boucle à travers le réseau de products utilisant create()

Controller:

public function postBatch(){ 

    $products = Input::get('products'); 

    foreach($products as $product){ 
     Batch::create(['product_name' => $product]); 
    } 

} 
Questions connexes