我已联系实体,使用以下方式拨打电话:
postContactAction(Request $request)
使用app/console generate:doctrine:form BundleName:Contact
在post函数中尝试获取请求并设置实体以请求名称,电子邮件等参数:
$contact = new Contact();
$form = $this->createForm(new ContactType(), $contact, array(
'method' => 'POST'));
$form->handleRequest($request);
在检查时,var_dump($contact);
返回空值的字段。
可能是什么问题?
使用邮递员发送邮件请求,但没有表格。
在ContactType中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('email', 'text', array('required' => false))
->add('phone', 'integer', array('required' => false))
->add('text', 'textarea')
->add('subject', 'text')
->add('createdAt', 'datetime', array('required' => false))
;
}
在ContactController中:
public function postContactAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$this->initErrorContainer();
$validator = $this->get('validator');
$contactDetails = $this->getRequest()->request->all();
// check if email and phone exists or not. One is enough
if (!array_key_exists('email', $contactDetails) && !array_key_exists('phone', $contactDetails)) {
$this->errorContainer->createAndAdd('email', $this->errorContainer->MESSAGE_REQUIRED);
$this->errorContainer->createAndAdd('phone', $this->errorContainer->MESSAGE_REQUIRED);
return $this->getView();
}
$contact = new Contact();
// handle form
$form = $this->createForm(new ContactType(), $contact, array(
'method' => 'POST'));
$form->handleRequest($request);
// set default values
var_dump($contact);
die;
答案 0 :(得分:0)
很奇怪,但你可以在调用createForm之后尝试获取表单,看看是否有相关内容,即: 你有:
$form = $this->createForm(new ContactType(), $contact, array('method' => 'POST'));
然后添加:
$form = $this->createForm(new ContactType(), $contact, array('method' => 'POST'))->getForm();
答案 1 :(得分:0)
解决。由于Entity使用与请求不同的类型,您需要创建该实体的简单模型,使用handleRequest将请求字段设置为该实体类型,然后您可以使用它。