Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Symfony 2] Przesiadka z symfony 1.4 i problem
muwie
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 21.02.2007
Skąd: Milejów

Ostrzeżenie: (0%)
-----


Witam wszystkich.
Chcąc się rozwijać i iśc z duchem czasu przesiadłem się na Symfony 2. Postawienie przykładowej aplikacji poszło bez trudu. Nawet system TWIG jakoś szybko załapałem.
Stworzenie Bloga z jedna tabelą (posty) też poszło gładko. Problem zaczął się gdy chciałem zrobić relację pomiędzy tabelami.
Sposób ztąd nie działa. Albo jest error albo po zmianach wogole nie tworzy relacji. Więc pomyślałem, że może łatwiej będzie przy użyciu plików yml. Stworzyłem dwa pliki:
  1. Acme\StoreBundle\Entity\Product:
  2. type: entity
  3. repositoryClass: Acme\StoreBundle\Repository\ProductRepository
  4. table: product
  5. id:
  6. id:
  7. type: integer
  8. generator: { strategy: AUTO }
  9. fields:
  10. name:
  11. type: string
  12. length: 100
  13. price:
  14. type: decimal
  15. scale: 2
  16. description:
  17. type: text
  18. manyToOne:
  19. category:
  20. targetEntity: Category
  21. mappedBy: product

  1. Acme\StoreBundle\Entity\Category:
  2. type: entity
  3. table: category
  4. fields:
  5. id:
  6. type: integer
  7. id: true
  8. generator:
  9. strategy: AUTO
  10. name:
  11. type: string
  12. length: '255'
  13. lifecycleCallbacks: { }
  14. oneToMany:
  15. products:
  16. targetEntity: Product
  17. mappedBy: category
.
Ale nie wiem jak te pliki zmapowaćsad.gif
Komenda
  1. php app/console doctrine:generate:entities Acme/StoreBundle/Entity/Product

nie daje pożądanego rezultatu. Domyślam się, że musze podać typ pliku z jakiego chce mapować. Tylko gdzie to mam zmienić?
Proszę o pomoc.
Go to the top of the page
+Quote Post
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Musisz ustawić sposób mapowania dla swojego bundle. Tutaj masz opis dokumentacji, sposób mapowania znajdziesz w ścieżce doctrine.orm.entity_managers.default. Szczegóły znajdziesz w sekcji Mapping Configuration.
Go to the top of the page
+Quote Post
muwie
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 21.02.2007
Skąd: Milejów

Ostrzeżenie: (0%)
-----


Dla potomnych w poniższym linku jest to ładnie opisane
http://docs.pixel-web.org/symfony2/book/do...figuration.html
Ale terazmam kolejny problem.
W pliku confg.yml zapisałem zmiany w taki sposób
  1. # Doctrine Configuration
  2. doctrine:
  3. dbal:
  4. driver: %database_driver%
  5. host: %database_host%
  6. port: %database_port%
  7. dbname: %database_name%
  8. user: %database_user%
  9. password: %database_password%
  10. charset: UTF8
  11.  
  12. orm:
  13. auto_generate_proxy_classes: %kernel.debug%
  14. mappings:
  15. StoreBundle: yml
  16.  

Po wywołaniu komendy
  1. php app/console doctrine:generate:entities Acme

Dostaje, że mojego bundle nie ma albo nie jest właczony. Ale przecież jak robiłem schemat bazy za pomocą plików php było wszystko dobrze.
Pliki z schematami tabeli mam w Acme\StoreBundle\Entity\config\doctrine.
Jeszcze dla tych, którzy by nie wierzyli, że mam tego mojego bundle zarejestrowanego to wklejam plik AppKernel.php
  1. <?php
  2.  
  3. use Symfony\Component\HttpKernel\Kernel;
  4. use Symfony\Component\Config\Loader\LoaderInterface;
  5.  
  6. class AppKernel extends Kernel
  7. {
  8. public function registerBundles()
  9. {
  10. $bundles = array(
  11. new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
  12. new Symfony\Bundle\SecurityBundle\SecurityBundle(),
  13. new Symfony\Bundle\TwigBundle\TwigBundle(),
  14. new Symfony\Bundle\MonologBundle\MonologBundle(),
  15. new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
  16. new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),
  17. new Symfony\Bundle\AsseticBundle\AsseticBundle(),
  18. new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
  19. new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
  20. new Acme\HelloBundle\AcmeHelloBundle(),
  21.  
  22. new Acme\WyboryBundle\AcmeWyboryBundle(),
  23. new Acme\StoreBundle\AcmeStoreBundle(),
  24. );
  25.  
  26. if (in_array($this->getEnvironment(), array('dev', 'test'))) {
  27. $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
  28. $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
  29. $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
  30. $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
  31. }
  32.  
  33. return $bundles;
  34. }
  35.  
  36. public function registerContainerConfiguration(LoaderInterface $loader)
  37. {
  38. $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
  39. }
  40. }

Dziękuje z góry za pomoc
Go to the top of the page
+Quote Post
destroyerr
post
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Wyświetl sobie pomoc dla tej komendy. Jako argument musisz podać nazwę bundle, a nie tylko jej fragment, zresztą masz tam też przykłady.
Go to the top of the page
+Quote Post
muwie
post
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 21.02.2007
Skąd: Milejów

Ostrzeżenie: (0%)
-----


Dzięki za pomoc. Jednak porzuciłem pliki yml. Trochę posiedziałem i rozgryzłem jak posługiwać się plikami php i metadanymi. Ale i tak dzięki za pomoc
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:07