71 lines
2.5 KiB
PHP
71 lines
2.5 KiB
PHP
<?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"
|
|
));
|
|
}
|
|
}
|