sye*_*d_h 1 php arrays symfony-forms symfony doctrine-orm
我是symfony的新手..我在以数组的形式保存数据时遇到了一些麻烦..我每次都会收到此错误.
"EntityManager#persist()期望参数1是实体对象,给定数组.
500内部服务器错误 - ORMInvalidArgumentException"
这是我的代码..
我的表格类型
<?php
namespace Demo\FirstBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class ShiftType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('date', 'date', array(
'label' => 'Shift Date',
'attr' => array(
'class' => 'form-control'
)
))
->add('site_name', 'text', array(
'label' => 'Site Name',
'attr' => array(
'class' => 'form-control'
)
))
->add('location', 'text', array(
'label' => 'Site Location',
'attr' => array(
'class' => 'form-control'
)
))
->add('startTime', 'time', array(
'label' => 'Start time',
'attr' => array(
'class' => 'form-control'
)
))
->add('endTime', 'time', array(
'label' => 'End time',
'attr' => array(
'class' => 'form-control'
)
))
->add('save', 'submit', array(
'attr' => array(
'class' => 'btn btn-lg btn-primary'
)
));
}
public function getName()
{
return 'shifts';
}
}Run Code Online (Sandbox Code Playgroud)
默认控制器
<?php
namespace Demo\FirstBundle\Controller;
use Demo\FirstBundle\Entity\Shifts;
use Demo\FirstBundle\Form\Type\ShiftType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller
{
public function indexAction()
{
return $this->render('DemoFirstBundle:Default:index.html.twig');
}
public function shiftAction(Request $request)
{
$shift = new Shifts();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(new ShiftType());
$form->handleRequest($request);
if ($form->isValid()) {
$shift = $form->getData();
$em->persist($shift);
$em->flush();
return $this->redirect($this->generateUrl('demo_first_homepage'));
}
return $this->render('DemoFirstBundle:Default:shifts.html.twig', array(
'shiftForm' => $form->createView(),
));
}
}Run Code Online (Sandbox Code Playgroud)
我试过在文档中搜索这个问题,但找不到解决方案..请帮忙.
谢谢.!
您应该将您的Shift实体传递到您的表单中,以便它被填充handleRequest.
$em = $this->getDoctrine()->getManager();
$shift = new Shifts();
// Pass the shift object into the form as the data property
$form = $this->createForm(new ShiftType(), $shift);
$form->handleRequest($request);
if ($form->isValid()) {
$em->persist($shift);
$em->flush();
...
}
...
Run Code Online (Sandbox Code Playgroud)
您还可以设置data_class表单以匹配您Janne Savolainen建议的模型/实体的表单.
| 归档时间: |
|
| 查看次数: |
5785 次 |
| 最近记录: |