Cześć wszystkim!
Opis sytuacyjny:
piszę sobie formularz kontaktowy, zawiera on pola: imię, nazwisko, temat (wiadomości), email, treść oraz pole "chcę otrzymać duplikat". Oczywiście jeszcze "wyślij". Aby to zrobić napisałem encję "Enquiery", kod:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Enquiry
*
* @ORM\Table(name="enquiry")
* @ORM\Entity(repositoryClass="AppBundle\Repository\EnquiryRepository")
*/
class Enquiry
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=20)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="lastName", type="string", length=30)
*/
private $lastName;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=50)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="subject", type="string", length=50)
*/
private $subject;
/**
* @var string
*
* @ORM\Column(name="body", type="text")
*/
private $body;
/**
* @var bool
*
* @ORM\Column(name="sendCopy", type="boolean")
*/
private $sendCopy;
//dalej settery i gettery
Następnie napisałem klasę formularza EnquieryType(), kod:
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class EnquiryType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('lastName')
->add('subject')
->add('email')
->add('body')
->add('copySend')
->add('send', SubmitType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Enquiry',
));
}
public function getName()
{
return 'enquiry';
}
}
Potem używam sobie mojego formularza w kontrolerze:
/**
* @Route("/kontakt", name="contact")
*/
public function contactAction(Request $request)
{
$enquiry = new Enquiry();
$form = $this->createForm(new EnquiryType(), $enquiry);
$form->getForm();
return $this->render('Website/contact.html.twig', array(
'form' => $form->createView()
));
}
Wg tego co wyrzuca wyjątek nie można załadować typu formularza:
Could not load type "AppBundle\Form\Type\EnquiryType"
Stack trace:
1.in vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php at line 87
if (class_exists($name) && in_array('Symfony\Component\Form\FormTypeInterface', class_implements($name))) {
$type = new $name();
} else {
throw new InvalidArgumentException(sprintf('Could not load type "%s"', $name));
}
}
2. at FormRegistry ->getType ('AppBundle\Form\Type\EnquiryType')
in vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php at line 67
3. at FormFactory ->createBuilder ('AppBundle\Form\Type\EnquiryType', object(Enquiry), array())
in vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php at line 39
4. at FormFactory ->create ('AppBundle\Form\Type\EnquiryType', object(Enquiry), array())
in vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php at line 285
5. at Controller ->createForm ('AppBundle\Form\Type\EnquiryType', object(Enquiry))
in src/AppBundle/Controller/WebsiteController.php at line 69
W stack trace nr 5 widać, że chodzi o moment tworzenia formularza w kontrolerze:
$form = $this->createForm(new EnquiryType(), $enquiry);
Nie wiem za bardzo co teraz zrobić. Przeglądam google od jakiegoś czasu, może ktoś naprowadzi?
Pozdrawiam