Predefinir campo en formulario
Publicado por gonzo__ (13 intervenciones) el 04/05/2021 16:25:55
Buenas tardes, tengo un problema a la hora de predefinir la eleccion de un campo en un formulario.
Este es el form: ElectronicaType.php
Este es el Controller: ElectronicaController.php
En el controlador defino que el estado quiero que sea el 1 predefinidamente, ya que acceso a la tabla ElectronicaEstados y coge el valor con id=1.
Lo que quiero es que el usuario predefinido cuando cree el formulario sea el usuario que ha iniciado sesion en la web.
Desde html se como se coge esa variable o por lo menos llego a acceder a ella:
pero en el controlador no comprendo como deberia ponerlo para que se seleccionara la varible de sesion del usuario.
Saludos y gracias de antemano!
Este es el form: ElectronicaType.php
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
<?php
namespace App\Form;
//Todos los Type son los tipos de campo que tenemos en el formulario, si añadimos un tipo de campo texto en area deberemos añadir su extension para poder usarla
use App\Entity\Electronica;
use App\Entity\ElectronicaEstados;
use PhpParser\Node\Stmt\Label;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
class ElectronicaType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('num_pedido', NumberType::class, ['label' => 'Número de pedido SEALED'])
->add('delegacion')
->add('cliente')
->add('vehiculo', TextType::class, ['label' => 'Vehículo'])
->add('km', TextType::class, ['label' => 'Kilometros'])
->add('matricula', TextType::class, ['label' => 'Matrícula'])
->add('motor', TextType::class, ['label' => 'Motor'])
->add('potencia', TextType::class, ['label' => 'Potencia'])
->add('unidad', TextType::class, ['label' => 'Unidad'])
->add('ref', TextType::class, ['label' => 'Referencia'])
->add('cantidad', NumberType::class, ['label' => 'Cantidad'])
->add('sintomas', TextareaType::class)
->add('alquiler')
->add('reparacion')
->add('presupuesto')
->add('garantia')
->add('fecha', DateType::class, array(
'data' => new \DateTime()))
->add('usuario')
->add('estado', HiddenType::class, array(
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Electronica::class,
]);
}
}
Este es el Controller: ElectronicaController.php
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
/**
* @Route("/new", name="electronica_new", methods={"GET","POST"})
*/
public function new(MailerInterface $mailer, Request $request): Response
{
$electronica = new Electronica();
$form = $this->createForm(ElectronicaType::class, $electronica);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($electronica);
$session = $request->getSession();
$electronica->setDelegacion($session->getId);
$electronica->setEstado($em->getRepository(ElectronicaEstados::class)
->find(1));
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($electronica);
$entityManager->flush();
$this->addFlash(
'success',
"¡Solicitud electrónica {$electronica->getId()} creada correctamente!"
);
$email = (new Email())
->subject('PORTAL | ¡Alta solicitud electrónica! ')
->from('')
->to('')
->html("<h2>¡Se ha creado correctamente la solicitud electrónica con número {$electronica->getId()} por el usuario {$electronica->getUsuario()}!.</h2>
<h1>Datos de la solicitud electrónica</h1>
ID:{$electronica->getid()}<p>
Delegación: {$electronica->getdelegacion()}<p>
Cliente: {$electronica->getcliente()}<p>
Vehículo: {$electronica->getvehiculo()}<p>
Kilometros: {$electronica->getkm()}<p>
Matrícula: {$electronica->getmatricula()}<p>
Motor: {$electronica->getmotor()}<p>
Potencia: {$electronica->getpotencia()}<p>
Unidad: {$electronica->getunidad()}<p>
Referencia: {$electronica->getref()}<p>
Cantidad: {$electronica->getcantidad()}<p>
Síntomas: {$electronica->getsintomas()}<p>
Alquiler: {$electronica->getalquiler()}<p>
Reparación: {$electronica->getreparacion()}<p>
Presupuesto: {$electronica->getpresupuesto()}<p>
Garantía: {$electronica->getgarantia()}<p>
");
$mailer->send($email);
return $this->redirectToRoute('electronica_index');
}
return $this->render('electronica/new.html.twig', [
'electronica' => $electronica,
'form' => $form->createView(),
]);
}
En el controlador defino que el estado quiero que sea el 1 predefinidamente, ya que acceso a la tabla ElectronicaEstados y coge el valor con id=1.
Lo que quiero es que el usuario predefinido cuando cree el formulario sea el usuario que ha iniciado sesion en la web.
Desde html se como se coge esa variable o por lo menos llego a acceder a ella:
1
<span class="user-block-name item-text">Bienvenido {{ app.user.nombre }} {{ app.user.apellidos }} </span>
pero en el controlador no comprendo como deberia ponerlo para que se seleccionara la varible de sesion del usuario.
Saludos y gracias de antemano!
Valora esta pregunta


0