我正在處理一個複雜的表單系統...對我來說。我跟着這裏的說明: http://symfony.com/doc/2.6/cookbook/form/form_collections.html我的表單對象不能正常工作
我的第一類(如標籤):
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints AS Assert;
class TipoPermessoFerie {
protected $id;
protected $nome;
protected $descrizione;
// permesso 'T' ferie 'F'
protected $permesso;
public function getId() {
return $this->id;
}
public function setId($int) {
$this->id = $int;
}
public function setNome($nome) {
$this->nome = $nome;
return $this;
}
public function getNome() {
return $this->nome;
}
public function setDescrizione($descrizione) {
$this->descrizione = $descrizione;
return $this;
}
public function getDescrizione() {
return $this->descrizione;
}
public function setPermesso($permesso) {
$this->permesso = $permesso;
return $this;
}
public function getPermesso() {
return $this->permesso;
}
}
第二類(如TagType):
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class TipoPermessoFerieType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('nome');
$builder->add('descrizione');
$builder->add('permesso');
$builder->add('id');
//$builder->setMethod('GET');
//$builder->add('save', 'submit', array('label' => '< Fase 2 >'));
//$builder->add('reset', 'reset', array('label' => '<Annulla>'));
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\TipoPermessoFerie',
));
}
public function getName() {
return 'TipoPermessoFerie';
}
}
第三類(如任務) :
// src/appBundle/EntityForm/Form1
namespace AppBundle\EntityForm;
use Doctrine\Common\Collections\ArrayCollection;
class Form1 {
protected $descrizione;
protected $tipoPermessoFerie; // collezione di TipoPermessoFerie
// metodi
public function __construct(){
$this->tipoPermessoFerie = new ArrayCollection();
}
public function getDescrizione() {
return $this->descrizione;
}
public function setDescrizione ($de) {
$this->descrizione = $de;
}
// restituisce un ArrayCollection
public function getTipoPermessoFerie() {
return $this->tipoPermessoFerie;
}
public function setTipoPermessoFerie ($TPE) {
$this->tipoPermessoFerie = $TPE;
}
}
第四課(如TaskType):
// src/AppBundle/Form/Type/Form1Type.php
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use AppBundle\EntityForm\Form1;
class Form1Type extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('descrizione');
$builder->add('tipoPermessoFerie', 'collection', array('type' => new TipoPermessoFerieType()));
$builder->setMethod('GET');
$builder->add('save', 'submit', array('label' => '< Fase 2 >'));
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array('data_class' => 'AppBundle\EntityForm\Form1',));
}
public function getName() {
return 'form1';
}
}
當我在控制器中使用這些類...
....
$f1 = New Form1();
$f1->setDescrizione("Fase 1");
for ($i = 0; $i < count($tipiF); $i++) {
$f1->getTipoPermessoFerie()->add($tipiF[$i]); //$tipiF[$i]);
}
$form = $this->createForm(new Form1Type(), $f1);
dump($form->getData());
$form->handleRequest($request);
// poi bisogna validare la prima form e passare alla seconda
if ($form->isValid()) {
$fe = New Ferie();
$dt = new \DateTime('now');
//$dt->setTimeZone(new \DateTimeZone('Europe/Rome'));
$fe->setDataRichiesta ($dt);
$fe->setAnnoRif(date('Y'));
$fe->setGiorniTurniChiesti(0);
$fe->setDataDa($dt);
$fe->setDataA($dt);
dump($form->getData());
....
首先在表格準備工作dump()
,第二,當我要訪問的數據不...爲什麼?我不明白我怎樣才能在控制器中使用表格日期......我需要他們在第二階段形象化!
我在代碼中丟失了什麼嗎?
我解釋...更好... 它似乎在表單中沒有錯誤! 這是錯誤的轉儲...形式的錯誤是空的...
我可以想像自卸命令返回的數據對象......但它是空的這樣dump($form->getData()) 這是問題...這對象必須有2行的值(非空),我想知道whitch行被檢查!
我想在一個動作中管理兩種形式,它是正確的嗎?
編輯:也許我不能讓我進行...讓我們從原始問題開始:我想實現一個2步表單(沒有javascrit和其他客戶端程序)....所以我認爲要實現兩種形式...一種形式由用戶獲取一些日期;第二種形式顯示獲得的數據並向用戶詢問其他數據! 我該怎麼做?
我注意到你'使用'主義:註釋,但實際上沒有在你的類參數上使用它們嗎?然後在你的問題後面,你使用明確作爲學說實體的類,但沒有在它們之間的映射。這些是外部映射的嗎?(例如orm文件) – DevDonkey
我也在類中使用註釋...我刪除了這些行,因爲那樣代碼太長了,我付出的代價並不重要。 –
哪一個是你發佈的圖像對應的轉儲($ form-> getData()):第一個還是第二個? –