2015-01-28 3 views
1

Вопрос довольно много дублирует How to override SyliusCoreBundle Model User , но ответы в оригинальном вопросе, похоже, не покрывают его. Вопрос в следующем:Override SyliusCoreBundle Пользователь модели

  • Каковы минимальные шаги для переопределения этой модели, добавив новое поле?
  • Я создал новый пакет, добавил модель в папку Entity и добавил следующее АРР/config.yml:
 
    sylius_resource: 
     resources: 
      sylius.user: 
       classes: 
        model: myVendor\myBundles\webBundle\Entity\User 

, но до сих пор проект использует Sylius \ Component \ Основные \ Model \ модели пользователя ,

  • Могу ли я использовать аннотации, определяющие мою модель?

ответ

1

Вы были почти там, и да, нижеследующие шаги еще не внесены в книгу - не знаю почему. Помимо вышеперечисленного вам необходимо изменить отображение в sylius.yml, которая присутствует в /vendor/sylius/sylius/src/Sylius/Bundle/CoreBundle/Resources/config/app/sylius.yml

Изменение в двух помещает

sylius_installer: 
 
    classes: 
 
     user: 
 
#   model: Sylius\Component\Core\Model\User # comment this out 
 
      model: Acme\YourBundle\Entity\User 
 

 
sylius_resource: 
 
    resources: 
 
     sylius.user: 
 
      driver: doctrine/orm 
 
      classes: 
 
#    model: Sylius\Component\Core\Model\User # comment this out 
 
       model: Acme\YourBundle\Entity\User

для вашего первого вопроса:

  1. Вам нужно создать новый класс сущностей whic h расширяет исходную модель пользователя и помещает ее в приведенный выше фрагмент, поместите путь к вашему новому классу сущностей.
  2. В классе Entity вам необходимо определить свои новые поля, а затем их сеттеры и геттеры. Кроме того, вам необходимо определить интерфейс с тем же именем, что и класс сущности, такой как: UserInterface.php, просто введите объявления метода расширенного класса сущностей и предоставите свой объект реализации этого интерфейса.
  3. Также вам нужно создать файл сопоставления доктрины в Acme/YourBundle/Resources/config/doctrine/User.orm.xml. Вы можете сделать через документацию, представленную на странице sylius user documentation, чтобы увидеть шаги.
  4. Заключительный шаг - добавить сопоставление, которое вы уже сделали в app/config/config.yml.

Для вашего второго вопроса: Вы можете использовать аннотации в источниках вы определяете в своем собственном расслоении т.е. Acme/YourBundle но в sylius суб пучках, как ResourceBundle и т.д. Вы должны использовать то, что используется в нем уже.

Если есть лучший способ сделать это - пожалуйста, дайте мне знать!

Смежные вопросы