4

私はSymfony 2の初心者です。

クエリからの「オプション」である「選択」を含むフォームを表示しようとしています。

私は自分のフォームに次のコードを入れました:

use Doctrine\ORM\EntityRepository;
use Bloc\MainBundle\Entity\Table;
use Bloc\MainBundle\Entity\Table2;

public function addAction(Request $request)
{
    $table = new Table();
    $form = $this->createFormBuilder($table , array('attr' => array('role' => 'form')))
        ->add('num', 'integer', array('label' => 'Numéro', 'attr' => array('class' => 'form-control')))
        ->add('nom_emetteur', 'text', array('label' => 'Emetteur', 'attr' => array('class' => 'form-control')))
        ->add('numero', 'entity', array('class' => 'BlocMainBundle:Table2', 'property' => 'numero'))
        ...
}

そして、私は次のエラーがあります:

Neither the property "numero" nor one of the methods "getNumero()", "isNumero()", "hasNumero()", "__get()" or "__call()" exist and have public access in class "Bloc\MainBundle\Entity\Table". 

エラーが「numero」がエンティティ テーブルにないことを示していることは理解していますが、エンティティ Table2 について質問します。私は何かを見逃しているに違いないが、どこにあるのか分からない...

私のエンティティ定義は次のようになります: 表 1:

<?php...
class Table
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer
     *
     * @ORM\Column(name="num", type="integer")
     */
    private $num;

    //Getter and setter...
}

表 2

<?php

namespace Bloc\MainBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Fournisseur
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Bloc\MainBundle\Entity\Table2Repository")
 */
class Table2
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer
     *
     * @ORM\Column(name="numero", type="integer")
     */
    private $numero;

    /**
     * Set numero
     *
     * @param integer $numero
     * @return Fournisseur
     */
    public function setNumero($numero)
    {
        $this->numero = $numero;

        return $this;
    }

    /**
     * Get numero
     *
     * @return integer 
     */
    public function getNumero()
    {
        return $this->numero;
    }
    ...
}

私を助けてくれませんか?

4

3 に答える 3

1

情報のテーブルが必要な場合は、コンストラクターを作成できますForm class

あなたのコントローラーで:

$emForm = $this->getDoctrine()->getRepository('RelacionesDoctrineBundle:Adolecente');

$asignatura = new AsignaturasType($emForm);// your form class

あなたのフォームクラスで

class AsignaturasType extends AbstractType {

      protected $repository;

          function __construct($repository)
             {
               $this->repository = $repository;
             }
}

そして完了!あなたはそれを使用します:

  $findAdolecente    = $this->repository->findAll();
于 2017-01-08T00:53:07.483 に答える