1

私は 1 つのテーブル名を持っています。Blog 以下はその構造です。

FieldName       Type
Id              int(5)
blog_title      string(255)
blog_url        string(255)
blog_desc       text
image           string(255)
tags            string(255)
blog_created_at Date
blog_status     string(1)

コントローラーでこのテーブルのフォームを 1 つ作成しました。

  public function addAction()
{
    $entity = new Blog();

    $form = $this->createFormBuilder()
        ->add('blog_title')
        ->add('blog_desc' ,'textarea')
        ->add('blog_url')
        ->add('image')
        ->add('tags')
        ->add('blog_status')
        ->getForm();

    $request =  $this->getRequest();
    if ($request->getMethod() == 'POST') 
    {
        $form->bindRequest($request);
        if ($form->isValid()) 
        {
            $em = $this->getDoctrine()->getManager();
             $em->persist($entity);
             $em->flush();
            return $this->redirect($this->generateUrl('admin_index'));
        }
      }
     return $this->render('AdminBlogBundle:default:add.html.twig',array(
        'form' => $form->createView(),
    )); 

}

このフォームの値をデータベースに入力したいのですが、エラーが発生します

 An exception occurred while executing 'INSERT INTO Blog (blog_title, blog_desc,
  blog_url, image, tags, blog_created_at, blog_status) VALUES (?, ?, ?, ?, ?, ?, ?)'
  with params {"1":null,"2":null,"3":null,"4":null,"5":null,"6":null,"7":null}:

フォームから投稿しているすべての値は、print_r($request); を呼び出してさようならを取得するリクエストのオブジェクト配列に取得されます。しかし、バインド中にこのエラーが発生します。だから私を助けてください。

4

3 に答える 3

1

エンティティを createFormBuilder メソッドに渡す必要があります。そうしないと、フォーム ビルダーは、フォーム フィールドをエンティティにマップする必要があることを知りません。そのようです:

// ...
$form = $this->createFormBuilder($entity)
// ...

それはすべてドキュメントにあります: http://symfony.com/doc/current/book/forms.html#building-the-form

于 2013-03-09T11:25:29.343 に答える
0

次のように、モデル オブジェクトをビルダーに渡す必要があります。

$form = $this->createFormBuilder()
    // ...
    ->setData($entity)
    ->getForm();

またはこれ:

$form = $this->createFormBuilder('form', $entity)
    // ...
    ->getForm();
于 2013-03-09T11:24:47.053 に答える