nineskeletor/src/Form/Niveau02Type.php

71 lines
2.5 KiB
PHP
Raw Normal View History

2022-07-21 16:15:47 +02:00
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr\Join;
class Niveau02Type extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('submit',
SubmitType::class,[
"label" => "Valider",
"attr" => ["class" => "btn btn-success"],
]
);
$access=$options["access"];
$userid=$options["userid"];
$builder->add('niveau01',
EntityType::class, [
"class" => "App\Entity\Niveau01",
"label" => $options["appNiveau01label"],
"placeholder" => "== Choisir ".$options["appNiveau01label"]." ==",
"choice_label" => "label",
"disabled" => ($options["mode"]!="submit"),
"query_builder"=> function (EntityRepository $er) use($access,$userid) {
switch($access) {
case "admin":
return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC');
break;
case "modo":
$result=$er->createQueryBuilder("table")->innerJoin("App:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01")->orderBy('table.label','ASC');
$result->andWhere("usermodo.user = :user");
$result->setParameter('user', $userid);
return $result;
break;
}
},
]
);
$builder->add('label',
TextType::class, [
"label" =>"Label",
]
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'App\Entity\Niveau02',
'mode' => "string",
'access' => "string",
'userid' => "string",
'appMasteridentity' => "string",
'appNiveau01label' => "string",
'appNiveau02label' => "string"
));
}
}