2014-04-04 1 views
0

BlogPost의 슬러그를 여러 언어로 번역하려고합니다. KnpLabs/DoctrineBehaviors를 사용하여 작업에 도움을 주기로했습니다. 번들을 설치하고 분만 작업을 할 수있게되었습니다. 그러나 번역 가능한 동작을 추가하면 스키마를 업데이트 할 수 없습니다.번역 동작이 Enti 폴더를 찾고 있습니다.

내 데이터베이스 스키마를 업데이트하려고하면 다음과 같은 오류가 발생합니다. --force는 그림에 없지만 같은 결과를 나타냅니다.

enter image description here

여기에 내 블로그 게시물 기업의 :

namespace MyProject\MyBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Knp\DoctrineBehaviors\Model as ORMBehaviors; 

/** 
* @ORM\Entity 
*/ 
class BlogPost 
{ 
    use ORMBehaviors\Sluggable\Sluggable, 
     ORMBehaviors\Translatable\Translation; 


    /** 
    * @ORM\Column(type="string") 
    */ 
    protected $title; 

    public function setTitle($title) 
    { 
     $this->title = $title; 
     return $this; 
    } 


    public function getSluggableFields() 
    { 
     return [ 'title' ]; 
    } 

} 

그리고 여기 내 BlogPostTranslation 엔티티의 :

namespace MyProject\MyBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Knp\DoctrineBehaviors\Model as ORMBehaviors; 
use ORMBehaviors\Translatable\Translation; 

/** 
* @ORM\Entity 
*/ 
class BlogPostTranslation 
{ 
    use ORMBehaviors\Translatable\Translation; 


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


    /** 
    * @ORM\Column(type="string") 
    */ 
    protected $title; 

    public function setTitle($title) 
    { 
     $this->title = $title; 
    } 

    public function getTitle() 
    { 
     return $this->title; 
    } 
} 

나는 교리와 "TargetEntity"일부 디버깅 정말 찾고 있습니다 않았다 폴더 "Enti". 번역 할 수있는 동작을 추가하는 경우에만 발생합니다. 내가 제거하면 아무 문제없이 슬러그 가능한 동작을 업데이트하고 사용할 수 있습니다.

답변

1

문제는 BlogPost 엔티티 내에 있습니다. Translation 형질 대신 use 형에 Translatable 형질이 있어야합니다.

/** 
* @ORM\Entity 
*/ 
class BlogPost 
{ 
    use ORMBehaviors\Sluggable\Sluggable, 
     ORMBehaviors\Translatable\Translatable; 
    // ... 

는 또한 섹션에 대한 proxy translations 체크 아웃 :
이 문제는 use 문을 변경 수정합니다.

+1

Yup! 나는 그것을 알아내는 것을 끝내었다. 그러나 나는 그것이 미래에 누군가에게 유용 할 것이라고 확신한다. 번들이 완전히 멋지기 때문에 조금 더 문서화 된 것은 부끄러운 일입니다! –

관련 문제