0

ドメインとその開始日を含むテーブルがあります。ドメインをクリックすると、編集 (更新) のフォームが表示され、そのフィールドに現在の情報が入力されます。私はこれまでこれを作ってきました:

class Domains
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(type="string", length=100)
 */
protected $main_domain;

/**
 * @ORM\Column(type="date", nullable=true)
 */
protected $start_date;

... 各プロパティのセッターとゲッターを使用します。

フォームを作成するためのクラス EditType を作成します。

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('start_date', 'date', array('widget' => 'single_text', 'format' => 'yyyy-MM-dd'));
}

getName() メソッドを使用すると、EditController に問題が発生します。

class EditController extends Controller
{
/**
 * @Route("/fc/edit/{id}")
 */
public function editAction($id, Request $request)
{
    $domain = $this->getDoctrine()
        ->getRepository('AcmeAbcBundle:Domains')
        ->find($id);

    if (!$domain) 
    {
        throw $this->createNotFoundException('No domians found');
    }

    $form = $this->createForm(new EditType(), $domain);

    if($request->getMethod() != 'POST')
    {
         return $this->render('AcmeAbcBundle:Edit:form.html.twig', array(
        'id'=>$id, 'domain'=>$domain, 'form' => $form->createView() ));
    }



    if ($request->getMethod() == 'POST') 
    {
        $form->bindRequest($request);
        print_r($request);

        if ($form->isValid())
        {
            $em = $this->getDoctrine()->getEntityManager();
            $domain = $em->getRepository('AcmeAbcBundle:Domains');

            if (!$domain) 
            {
                throw $this->createNotFoundException('There is no such domain');
            }

            $domain->setStartDate($request->getStartDate());

            $em->flush();

        }

        return $this->redirect($this->generateUrl('homepage'));
   }

どうあるべきかわかりません:(いくつか試してみましたが、うまくいかなかったようです。

$domain->setStartDate($request->getStartDate());

ここではメソッドが見つかりません。$request->start_date の場合、プロパティが見つかりません...

4

1 に答える 1

2

start_date POSTパラメーターを取得するには、次のことを行う必要があります。

$request->request->get('start_date');

これらの行にも注意してください

        $em = $this->getDoctrine()->getEntityManager();
        $domain = $em->getRepository('AcmeAbcBundle:Domains');

        if (!$domain) 
        {
            throw $this->createNotFoundException('There is no such domain');
        }

    if ($form->isValid())

すでにドメインオブジェクトを関数のさらに上に持っているので、は不要です。実際、ドメインオブジェクトを取得していないため、これらは間違っています。代わりに、entityrepositoryを取得しています。

于 2012-08-06T07:56:57.410 に答える