<?php
namespace App\Form;
use App\Entity\Expensive;
use App\Entity\Tiers;
use App\Entity\categorieDepense;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Doctrine\ORM\EntityRepository;
class ExpensiveType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$boutique = $options['boutique'];
$builder
->add('laDate', DateType::class, [
'widget' => 'single_text',
'label' => 'admin.la_date',
'attr' => [
'class' => 'input-xs form-control',
]])
->add('piece', null, [
'label' => 'admin.expensives.piece',
'attr' => [
'class' => 'input-xs form-control',
]])
->add('tiers', EntityType::class, [
'attr' => [
'class' => 'form-control'
],
// looks for choices from this entity
'class' => Tiers::class,
'label' => 'admin.third.label',
'placeholder' =>'admin.third.choisir_un_tiers',
'query_builder' => function (EntityRepository $er) use($boutique){
return $er->createQueryBuilder('t')
->leftJoin ('t.boutique', 'b')
->addSelect('b')
->where('b.id =:boutique')
->setParameters(
array('boutique' => $boutique)
)
->orderBy('t.nom', 'ASC');
},
// uses the User.username property as the visible option string
'choice_label' => 'nom',
// used to render a select box, check boxes or radios
// 'multiple' => true,
// 'expanded' => true,
])
->add('categorieDepense', EntityType::class, [
'attr' => [
'class' => 'form-control'
],
// looks for choices from this entity
'class' => CategorieDepense::class,
'label' => 'admin.categorie_depense.categorie_depense_ou_poste_budgetaire',
'placeholder' =>'admin.categorie_depense.categorie_depense',
'query_builder' => function (EntityRepository $er) use($boutique){
return $er->createQueryBuilder('t')
->leftJoin ('t.boutique', 'b')
->addSelect('b')
->where('b.id =:boutique')
->setParameters(
array('boutique' => $boutique)
)
->orderBy('t.nom', 'ASC');
},
// uses the User.username property as the visible option string
'choice_label' => 'nom',
// used to render a select box, check boxes or radios
// 'multiple' => true,
// 'expanded' => true,
])
->add('montant', NumberType::class, ['label' => 'admin.expensives.montant', 'attr' => [
'class' => 'form-control',
'step' => '0.1'
],
'html5' => true,
])
->add('detail', null, ['label' => 'admin.detail', 'attr' => [
'class' => 'form-control',
]])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Expensive::class,
'boutique' => null
]);
}
}