Cześć, mam prosty kontroler z formularzem. Renderuję go w twigu. Nie mam pomysłu jak to przesłać w tablicy w render, gdyż zmienne nie za każdym razem istnieją. Próbuję podmieniać wartość zmiennej, ale to słabe rozwiązanie.
Ktoś coś doradzi?
Wrzucam obecny kontroler.
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\ChocoSettings;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Session\Session;
class ChocoController extends AbstractController
{
/**
* @Route("/", name="home")
*/
public function index()
{
$session = new Session();
$session->start();
$title = new ChocoSettings();
$repository = $this->getDoctrine()->getRepository(ChocoSettings::class);
$title = $repository->findOneBy(['name' => 'title']);
$quote = $repository->findOneBy(['name' => 'quote']);
return $this->render('base.html.twig', [
'title' => $title,
'quote' => $quote,
]);
}
/**
* @Route("/login", name="login")
*/
public function login(Request $request)
{
$session = new Session();
$session->start();
$title = new ChocoSettings();
$repository = $this->getDoctrine()->getRepository(ChocoSettings::class);
$title = $repository->findOneBy(['name' => 'title']);
$quote = $repository->findOneBy(['name' => 'quote']);
$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
->add('name', TextType::class)
->add('password', PasswordType::class)
->add('send', SubmitType::class)
->getForm();
$form->handleRequest($request);
$tablica = "ddwrt";
if ($form->isSubmitted() && $form->isValid()) {
$ddd = $form->get('name');
$tablica = $ddd;
}
return $this->render('forms/login.html.twig', [
'title' => $title,
'quote' => $quote,
'tablica' => $tablica,
'form' => $form->createView(),
]);
}
}
Mam tylko jeden obecnie.