php获取不同form,php – Symfony2,Form,试图获取非对象的属性

景岳
2023-12-01

我正在尝试创建一个没有实体的联系表单,但在我提交表单后,我会收到此错误:

Notice: Trying to get property of non-object in /var/www/Myblog/vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php line 84

这是我的ContactType.php

namespace Acme\ContactBundle\Form\Type;

use Symfony\Component\Form\AbstractType;

use Symfony\Component\Form\FormBuilderInterface;

use Symfony\Component\OptionsResolver\OptionsResolverInterface;

use Symfony\Component\Validator\Constraints\Length;

use Symfony\Component\Validator\Constraints\NotBlank;

use Symfony\Component\Validator\Constraints\Email;

class ContactType extends AbstractType

{

public function setDefaultOptions(OptionsResolverInterface $resolver)

{

$resolver->setDefaults(array(

'data_class' => null,

'csrf_protection' => true,

));

}

public function buildForm(FormBuilderInterface $builder, array $options)

{

$builder->add('name', 'text', array('constraints' => array(new NotBlank(array('message' => 'Name cannot be blank')), new Length(array('min' => 3, 'minMessage' => 'Name is too short')), 'label' => 'Name')))

->add('email', 'email', array('constraints' => array(new NotBlank(array('message' => 'E-mail cannot be blank')), new Email(array('message' => 'E-mail is not valid')), 'label' => 'E-mail')))

->add('content', 'textarea', array('constraints' => array(new NotBlank(array('message' => 'Message cannot be blank')), new Length(array('min' => 10, 'minMessage' => 'Message must have min. 10 characters')), 'label' => 'Message')))

->add('save', 'submit', array('label' => 'Send'));

}

public function getName()

{

return 'contact';

}

}

和我的DefaultController.php

namespace Acme\ContactBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Symfony\Component\HttpFoundation\Request;

use Symfony\Component\HttpFoundation\Response;

use Acme\ContactBundle\Form\Type\ContactType;

use Acme\SettingsBundle\Entity\Settings;

use Symfony\Component\Security\Core\Exception\AccessDeniedException;

class DefaultController extends Controller

{

public function indexAction(Request $request)

{

$form = $this->createForm('contact');

$form->handleRequest($request);

if($form->isValid())

{

$em = $this->getDoctrine()->getManager();

$settings = $em->getRepository('AcmeSettingsBundle:Settings')->find(Settings::DUMMY_IDENTIFIER);

$message = \Swift_Message::newInstance()

->setSubject('Message from contact form - ' . $settings->getPageName())

->setFrom($form->get('email')->getData())

->setTo($settings->getPageEmail())

->setBody($this->renderView('AcmeContactBundle:Default:mail.txt.twig', array('name' => $form->get('name')->getData(), 'page_name' => $settings->getPageName(), 'homepage' => $this->generateUrl('default_blog'))));

$this->get('mailer')->send($message);

$this->get('session')->getFlashBag()->add(

'success',

'Message was successfuly sent'

);

}

return $this->render('AcmeContactBundle:Default:index.html.twig', array('form' => $form->createView()));

}

}

我在网上看到,它是5.3版本的PHP bug,但我使用的是5.4.19 PHP版本.任何的想法?

更新 – 转储测试

// Validate the data against the constraints defined

// in the form

$constraints = $config->getOption('constraints');

var_dump($constraints); exit();

收益:

array(0) {

}

 类似资料: