我想編輯通過形式的實體:正確的項目在樹枝選用了經過編輯的形式(symfony的)
public function editerOffreAction($slug, Request $request)
{
$em = $this->getDoctrine()->getManager();
$offre = $em->getRepository('AppBundle:Offre')->findOneBySlug($slug);
$form = $this->createForm(OffreType::class, $offre);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em->persist($offre);
$em->flush();
return $this->redirectToRoute('app_lister_echanges_utilisateur');
}
return $this->render('AppBundle/Utilisateur/editer.offre.html.twig', array(
'form' => $form->createView(),
));
}
的形式如下:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', EntityType::class, array(
'class' => 'AppBundle:Sources\TypeIntervenant',
'choice_label' => 'nom',
'placeholder' => 'choose a type of worker',
));
// I m showing only the field that is important
}
實體的appbundle:來源\ TypeInterant包含兩個值:profesionnal和not profesional。
現在的問題:當我渲染樹枝視圖,字段類型是佔位符,即使類型choosen在實體:
<div class="form-group">
{{ form_label(form.type) }}
{{ form_widget(form.type) }}
{{ form_errors(form.type) }}
</div>
我怎樣才能使包含的值的字段類型當我編輯它的實體?
我想:
<div class="form-group">
{{ form_label(form.type) }}
{{ form_widget(form.type, { 'value' : '1' }) }}
{{ form_errors(form.type) }}
</div>
但我希望值是在實體的實際價值! 非常感謝您的幫助!
編輯1:這裏是兩個實體的代碼(我puting只有相關的信息作爲offre實體長)
實體 「offre」:
<?php
namespace AppBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* Offre
*
* @ORM\Table(name="offre")
* @ORM\Entity(repositoryClass="AppBundle\Repository\OffreRepository")
*/
class Offre
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="titre", type="string", length=100)
*/
private $titre;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=25)
*/
private $type;
// AND ALL OTHER FIELDS
//ETC ...
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set titre
*
* @param string $titre
*
* @return Offre
*/
public function setTitre($titre)
{
$this->titre = $titre;
return $this;
}
/**
* Get titre
*
* @return string
*/
public function getTitre()
{
return $this->titre;
}
/**
* Set type
*
* @param string $type
*
* @return Offre
*/
public function setType($type)
{
$this->type = $type;
return $this;
}
/**
* Get type
*
* @return string
*/
public function getType()
{
return $this->type;
}
// AND OTHER SETTERS AND GETTERS FOR THE OTHER FIELDS ...
}
實體 「TypeIntervenant」
<?php
namespace AppBundle\Entity\Sources;
use Doctrine\ORM\Mapping as ORM;
/**
* TypeIntervenant
*
* @ORM\Table(name="c_type_intervenant")
* @ORM\Entity(repositoryClass="AppBundle\Repository\TypeIntervenantRepository")
*/
class TypeIntervenant
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=20)
*/
private $nom;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set nom
*
* @param string $nom
*
* @return TypeIntervenant
*/
public function setNom($nom)
{
$this->nom = $nom;
return $this;
}
/**
* Get nom
*
* @return string
*/
public function getNom()
{
return $this->nom;
}
public function __toString()
{
return $this->nom;
}
}
編輯2:這裏是形式的轉儲,當我編輯:
編輯3:
我想要去選擇的解決方案,所以我嘗試:
->add('type', ChoiceType::class, array(
'choices' => $this->getTypeTarifications(),
))
創建於形式的私有函數:
private function getTypeTarifications()
{
$choices = $this->em->getRepository('AppBundle:Sources\TypeTarification')->findAll();
return ($choices);
}
但不起作用!
你確定與TypeIntervenant的關係是否已保存?顯示傾銷實體Offre的樣子。 – miikes
請發佈兩個實體全班 – ste