2 Varlığım var: Kampanyalar & Materialstreams. ManyToMany ilişkisinde birbirleriyle bağlantılılar.Hata: Seçim alanına iletilen varlıklar çok adımlı bir biçimde yönetilmelidir
Campaignstream
class campaignstream
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=80)
*/
private $name;
/**
* @ORM\ManyToMany(targetEntity="materialstream", inversedBy="campaignstreams")
* @ORM\JoinTable(name="campaignstream_materialstream")
*
*/
private $materialstreams;
}
Materialstream
class materialstream
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="description", type="string", length=80)
*/
private $description;
/**
* @ORM\ManyToMany(targetEntity="campaignstream", mappedBy="materialstreams")
*
*/
private $campaignstreams;
}
Şimdi ona bağlı birden materialstreams ile campaignstream oluşturmak için çok adımlı bir form oluşturmak istiyorum. Benim denetleyicisi olarak
böyle bir şey var:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('materialstreams', 'entity', array(
'class' => 'CampaignBundle:materialstream',
'property' => 'description',
'multiple' => true,
'expanded' => false,
));
}
Şimdi sorun şu: Ben 2. adımda kullanmak formda, Şimdi
public function addAction(Request $request, $step)
{
$session = $request->getSession();
$em = $this->getDoctrine()->getManager();
if ($step == 1) {
$campaignstream = ($session->get('campaignstreamdata') == '') ? new campaignstream() : $session->get('campaignstreamdata');
$CSF = $this->createForm(new CampaignstreamForm(), $campaignstream);
$CSF->handleRequest($request);
if ($CSF->isSubmitted() && $CSF->isValid()) {
$session->set('campaignstreamdata', $CSF->getData());
return $this->redirectToRoute('campaignstream_add', array('step' => 2));
} else {
return $this->render('CampaignBundle:Stream:add.html.php', array(
'current' => $id,
'data' => $CSF->createView()
));
}
} elseif ($step == 2) {
$campaignstream = $session->get('campaignstreamdata');
$CSMSF = $this->createForm(new CampaignstreamMaterialstreamForm(), $campaignstream);
if ($CSMSF->isSubmitted()) {
$session->set('campaignstreamdata', $CSMSF->getData());
return $this->redirectToRoute('campaignstream_add', array('step' => 3));
} else {
return $this->render('CampaignBundle:Stream:add.html.php', array(
'progress' => $progress,
'current' => $id,
'data' => $CSMSF->createView(),
'title' => $title,
'campaignstream' => $campaignstream
));
}
} elseif ($step == 3) {
...
}
}
, bu var:
Adım 1'den geçiyorum ve adı doldurun. 2. adımdan geçiyorum ve doğru malzeme akışlarını seçiyorum. 3. adıma geldim ve 1 malzeme akışını unuttum. seçim alanına geçti Varlıkları bunu google'dan
yönetilmelidir ve benzeri çeşitli çözümler çalıştı: Ben hatayı almaya 2. adıma geri dönmek için linke tıklayın
Hata gider, ancak formum önceden eklenen verilerle doldurulmadı, ancak veriler oturumda var.
Gerçekten biraz yardım edebilirim.