4

私はSymfony2Frameworkにまったく慣れていません。エンティティManyToOneリレーションの埋め込みを形成したいと思います。エンティティAddressAddressTypeを使用する必要があります。

アドレスエンティティ

namespace Webmuch\ProductBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

class Address
{

    private $id;
    private $line1;
    private $city;
    private $zip;
    private $phone;

    /**
     * @var string $type
     *
     * @ORM\ManyToOne(targetEntity="AddressType")
     * @ORM\JoinColumn(name="address_type_id", referencedColumnName="id")
     */
    private $type;
}

AddressTypeエンティティ

namespace Webmuch\ProductBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

class AddressType
{
    private $id;
    private $title;
}

アドレスコントローラ

namespace Webmuch\ProductBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Webmuch\ProductBundle\Entity\Address;
use Webmuch\ProductBundle\Form\AddressType;

/**
 * Address controller.
 *
 * @Route("/address")
 */
class AddressController extends Controller
{
    /**
     * Displays a form to create a new Address entity.
     *
     * @Route("/new", name="address_new")
     * @Template()
     */
    public function newAction()
    {
        $entity = new Address();
        $form   = $this->createForm(new AddressType(), $entity);

        return array(
            'entity' => $entity,
            'form'   => $form->createView()
        );
    }
}

フォームセクション

namespace Webmuch\ProductBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class AddressType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('line1')
            ->add('line2')
            ->add('state')
            ->add('city')
            ->add('zip')
            ->add('phone')
            ->add('type')
        ;
    }
}

私は一日中これにこだわって過ごしました、そして私は多くのことを試みました、しかし私はそれを動かすことができませんでした。

4

1 に答える 1

6

ドキュメントで説明されています。

AddressType 用にもう 1 つのフォーム タイプを作成し (AddressTypeType と呼ばれますか? 見苦しいですが、名前を選択しました)、 に置き換え->add('type')ます->add('type', new AddressTypeType());

于 2012-07-05T11:04:15.970 に答える