2014-05-10 17 views
5

Tôi muốn tạo một giá trị ẩn cho Đối tượng khóa ngoại trong bộ điều khiển.Loại trường thực thể ẩn trong Symfony2

điều khiển trước đây của tôi là như thế này (hoạt động tốt):

->add('id_grup', 'entity', array('class' => 'Sifo\AdminBundle\Entity\MstGrup')) 

Tôi muốn gán một giá trị ẩn mẫu của tôi như thế này:

->add('id_grup', 'hidden', array('data' => $id)) 

Nhưng nó mang lại cho tôi một lỗi:

ContextErrorException: Catchable Fatal Error: Argument 1 passed to Sifo\AdminBundle\Entity\DftGrupMapel::setIdGrup() must be an instance of Sifo\AdminBundle\Entity\MstGrup, string given, called in C:\Sifony\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php on line 360 and defined in C:\Sifony\src\Sifo\AdminBundle\Entity\DftGrupMapel.php line 179

Làm cách nào tôi có thể gán giá trị cho một thực thể khóa ngoài bị ẩn? Cảm ơn bạn rất nhiều.

+0

trùng lặp: http://stackoverflow.com/questions/16905490/symfony2-data-transformer-on-hidden-field – ihsan

Trả lời

1

Yohooo, Cuối cùng tác phẩm của mình ... tôi cần xác định mặc định thực thể trước khi tạo hình thức và không thêm một lần nữa trong FormBuilder:

public function manageAction(Request $request, $id) 
{ 
    $em = $this->getDoctrine()->getManager(); 
$entity = $em->getRepository('SifoAdminBundle:MstGrup')->find($id); 

if (!$entity) { 
    throw $this->createNotFoundException('Unable to find MstGrup entity.'); 
} 

$entity_new = new DftGrupMapel(); 
$entity_new->setIdGrup($entity); 
$new_form = $this->createFormBuilder($entity_new) 
    ->setAction($this->generateUrl('admin_grup_mapel_manage', array('id' => $id))) 
    ->setMethod('POST') 
->getForm(); 

$new_form->handleRequest($request); 

if ($new_form->isValid()) { 
    $em_new = $this->getDoctrine()->getManager(); 
    $em_new->persist($entity_new); 
    $em_new->flush(); 

    return $this->redirect($this->generateUrl('admin_grup_mapel_manage', array('id' => $id))); 
} 

return $this->render('SifoAdminBundle:DftGrupMapel:manage.html.twig', array(
    'entity'  => $entity, 
    'new_form' => $new_form->createView(),    
)); 
} 

Hy vọng có thể giúp đỡ người gặp khó khăn trong vấn đề này quá haha ​​...

Các vấn đề liên quan