Nicht mehr ganz neu hier
Hallo zusammen,
ich bräuchte ein dynamisches Formular in Symfony 2.3. Ich suche und probiere nun schon 14 Tage aber ich finde einfach keine Lösung.
Ich habe zwei Entities eine Projekt und eine Artikel mit einer ManytoOne-Beziehung, was in der Article.php so aussieht:
Der Controller sieht wie folgt aus ( es soll hier ein mal das Projekt dargestellt werden was auch ohne Probleme funktioniert und einmal die zugehörigen Artikel was leider nicht funktioniert):
An den Kommentaren sieht man, dass ich schon verschiedenes versucht habe
Im Repository findet man einen entsprechenden Select, der auch die richtigen Daten liefert:
Mein ArticleType sieht momentan so aus:
Dies so wie es jetzt aussieht, bewirkt immer den Fehler
Mittlerweile habe ich soviel probiert, verschiedene Fehler erhalten, aber ich komme nicht weiter. Daher wäre ich unsagbar froh, wenn jemand einen Tipp für mich hätte.
Viele Grüße
Micha
ich bräuchte ein dynamisches Formular in Symfony 2.3. Ich suche und probiere nun schon 14 Tage aber ich finde einfach keine Lösung.
Ich habe zwei Entities eine Projekt und eine Artikel mit einer ManytoOne-Beziehung, was in der Article.php so aussieht:
PHP:
/**
* @ORM\ManyToOne(targetEntity="Pso\ProjectBundle\Entity\Project", inversedBy="article")
* @ORM\JoinColumn(name="project_id", referencedColumnName="id")
*/
private $projects;
Der Controller sieht wie folgt aus ( es soll hier ein mal das Projekt dargestellt werden was auch ohne Probleme funktioniert und einmal die zugehörigen Artikel was leider nicht funktioniert):
PHP:
public function maintainProjectAction(id $id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$project = $em->getRepository('PsoProjectBundle:Project')->find($id);
$form = $this->createForm(new MaintainProjectType(),$project);
$form->handleRequest($request);
//$article = $em->getRepository('PsoProjectBundle:Project')->findArticle($id);
//return New Response (var_dump($article));
//$form2 = $this->createForm(new ArticleType($article));
//$form2 = $this->createForm(new ArticleType($article),$form_data);
//$form2 = $this->createForm(new ArticleType(),$article);
$form2 = $this->createForm(new ArticleType($id));
$form2->handleRequest($request);
}
An den Kommentaren sieht man, dass ich schon verschiedenes versucht habe
Im Repository findet man einen entsprechenden Select, der auch die richtigen Daten liefert:
PHP:
public function findArticle($id)
{
return $this->getEntityManager()
->createQuery(
'SELECT a.id,a.category,a.product_description,a.article_nr,a.color,a.carton_qty
FROM PsoProjectBundle:article a
JOIN a.projects p
WHERE p.id = :id
'
)
->setParameter('id', $id)
->getResult();
}
Mein ArticleType sieht momentan so aus:
PHP:
<?php
namespace Pso\ProjectBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class ArticleType extends AbstractType
{
protected $id;
public function __construct(id $id) {
$this->id = $id;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$id = $this->id;
$builder
->add('category','text', array('label' => 'Category'))
->add('product_description','text', array('label' => 'Product description'))
->add('article_nr','text', array('label' => 'Article-Nr'))
->add('id', 'entity', array(
'class' => 'PsoProjectBundle:Article',
'query_builder' => function(EntityRepository $er) use ($id) {
return $er->createQuery ('SELECT a.id
FROM PsoProjectBundle:article a
JOIN a.projects p
WHERE p.id = :id')
;
},
))
->add('color','text', array('label' => 'color'))
->add('carton_qty','text', array('label' => 'carton_qty'))
->add('qty','text', array('label' => 'qty'))
->add('carton','text', array('label' => 'carton'))
->add('size','text', array('label' => 'size'))
->add('price','text', array('label' => 'price'))
->add('price_calculation_file','text', array('label' => 'price_calculation_file'))
->add('closed','text', array('label' => 'closed'))
->add('dbinsert','text', array('label' => 'dbinsert'))
->add('dbupdate','text', array('label' => 'dbupdate'))
->add('product_packaging','text', array('label' => 'product_packaging'))
->add('outer_packaging','text', array('label' => 'outer_packaging'))
->add('submit', 'submit', array(
'attr'=> array (
'formnovalidate' => 'formnovalidate')))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Pso\ProjectBundle\Entity\Article',
));
}
public function getName()
{
return 'Article';
}
}
Dies so wie es jetzt aussieht, bewirkt immer den Fehler
Class Pso\ProjectBundle\Controller\id does not exist
Mittlerweile habe ich soviel probiert, verschiedene Fehler erhalten, aber ich komme nicht weiter. Daher wäre ich unsagbar froh, wenn jemand einen Tipp für mich hätte.
Viele Grüße
Micha