1 pièce(s) jointe(s)
Créer des champs de type Entity dynamique en symfony 3
Bonsoir chèr tous,
Je débute depuis peu en Symfony 3 et je me heurte à un souci auquel malgré mes recherches je n'ai pas trouvé solution jusqu'alors :(. Voilà :
J'ai deux entités Demande et Article unis pas une relation ManyToMany. Une demande peut concerner plusieurs articles avec des quantités. Donc sur la page d'ajout de la demande je récupère la liste des articles avec Entity Type.
Pièce jointe 349360
Le hic c'est que je souhaite, sur cette page, ajouter de façon dynamique et le champ select et le champ de quantité pour lier d'autres articles à ma demande à l'aide d'un bouton Add, et les retirer avec un bouton Delete dans le genre ce qui ce qui se fait déjà avec le type CollectionType de Symfony.
Voilà ce que j'ai déja fait
Code de mon controlleur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| <?php
namespace bpecStockManager\smBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType ;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class DemandeArticleType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('article', EntityType::class, array(
'class' => 'bpecStockManagersmBundle:Article',
'choice_label' => 'articleNom',
'multiple' => false,
'placeholder' => "Choisir l'article" ,
'label' => 'Article'
))
->add('quantiteDemande', IntegerType::class, array(
'label' => 'Quantité demandée'))
->add('Save', SubmitType::class, array('label' => 'Valider') )
;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'bpecStockManager\smBundle\Entity\DemandeArticle'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'bpecstockmanager_smbundle_demandearticle';
}
} |
Je vous avoue que je ne sais quoi faire. :pleure:
Need help please!!! :(
Merci bien
Rebonjour TBourgault, aurait des pistes précis vers lesquelles me diriger ?
Citation:
Envoyé par
TBourgault
Bonjour.
Si tu veux quelque chose de dynamique fais le en ajax.
Je m'explique, dans ton js, tu as un tableau vide. Lorsque l'utilisateur choisi un article et une quantité, tu stock ces informations dans ton tableau JS. Une fois qu'il a fini de saisir il clic sur un button (ex: Etape suivante). Lorsqu'il clic tu envois une requête ajax
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
$.ajax({
url: url,
type: "POST",
data : data,
success: function (response) {
window.location = response.url;
}
})
// data -> ton tableau de donnée
// url -> la route de ton controller (var url = "{{ url('save_commande', {'cmd' : commande.id}) }}";)
// response.url -> dans ton controller tu renvoies un JSONResponse, qui aura un paramètre 'url' qui sera la route de la page suivante. |
Après je sais qu'il est possible de la faire avec des collections mais je ne l'utilise jamais je trouve cette utilisation plus pratique ;)
Cordialement