2012-07-16 17 views
8

Tôi đang cố gắng sử dụng các hành vi Sluggable từ Extensions bó Học thuyết:Symfony 2 - Sluggable không được thiết lập khi sử dụng hình thức

http://gediminasm.org/article/sluggable-behavior-extension-for-doctrine-2

Tôi đã thiết lập một lĩnh vực sluggable trong tổ chức của tôi sử dụng chú thích nhưng giá trị không nhận được thiết lập khi tôi sử dụng một hình thức để tạo ra một thể hiện, gây ra các lỗi sau:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'slug' cannot be null

Dưới đây là các mã từ bộ điều khiển của tôi:

 $form = $this->createFormBuilder($section) 
         ->add('title', 'text') 
         ->getForm(); 

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

      if ($form->isValid()) { 

       $em = $this->getDoctrine()->getEntityManager(); 
       $em->persist($section); 
       $em->flush(); 

       if (empty($id)) { 
        return $this->redirect($this->generateUrl('ContentBundle_section_new')); 
       } 
       else { 
        return $this->redirect($this->generateUrl('ContentBundle_section_edit', array('id' => $id))); 
       } 

      } 
     } 

Và định nghĩa lĩnh vực sluggable trong lớp Entity:

/** 
    * @Gedmo\Slug(fields={"title"}) 
    * @ORM\Column(length=128, unique=true) 
    */ 
    private $slug; 

Nếu tôi thêm lĩnh vực sên đến formbuilder và đặt một giá trị bằng tay, nó hoạt động OK, nhưng rõ ràng là tôi không muốn được rối tung xung quanh với điều này.

Có ai giúp được không?

Cảm ơn

+0

làm bạn có: sử dụng Gedmo \ Lập bản đồ \ Chú thích dưới dạng Gedmo; trong lớp thực thể? – drupality

+0

Có. Thực thể này cũng (thành công) bằng cách sử dụng phần mở rộng cây. – Dan

Trả lời

30

OK.

Tôi đã quên để thêm dòng sau vào file config.yml:

sluggable: true

Vì vậy, nó nên đọc cái gì đó như:

stof_doctrine_extensions: 
    default_locale: en 
    translation_fallback: true 
    orm: 
     default: 
      tree: true 
      timestampable: true 
      sluggable: true 
+0

thx, đang tìm kiếm câu trả lời này một thời gian dài ... trong dự án cuối cùng, đồng nghiệp của tôi đã làm điều này và tôi không thể tìm ra những gì tôi đã làm sai ... – AlexK

+2

Hãy chắc chắn rằng bạn đặt điều này trong "stof_doctrine_extensions" không có trong "học thuyết" vì tôi mất một thời gian để thấy sai lầm của tôi –

+0

Tôi gặp vấn đề tương tự và tôi thêm các cấu hình này, nhưng tôi gặp lỗi này: 'Không có phần mở rộng có thể tải cấu hình cho" stof_doctrine_extensions " . Có ai có thể giúp tôi không? – Laiso