Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CSContentBundleEntityPost:
- type: entity
- table: posts
- repositoryClass: CSContentBundleEntityPostRepository
- gedmo:
- soft_deleteable:
- field_name: deleted_at
- translation:
- locale: locale
- fields:
- id:
- type: integer
- length: 11
- id: true
- generator:
- strategy: AUTO
- title:
- type: string
- length: 500
- gedmo:
- - translatable
- slug:
- type: string
- length: 500
- gedmo:
- translatable: {}
- slug:
- separator: -
- fields:
- - title
- <?php
- namespace CSContentBundleEntity;
- use DoctrineORMMapping as ORM;
- use GedmoTranslatableTranslatable;
- use GedmoMappingAnnotation as Gedmo;
- use APYDataGridBundleGridMapping as GRID;
- /**
- * Post
- * @GedmoSoftDeleteable(fieldName="deleted_at", timeAware=false)
- * @GRIDSource(columns="id,title,is_active,created_at,updated_at")
- */
- class Post implements Translatable
- {
- /**
- * @var integer
- */
- private $id;
- /**
- * @var string
- * @GedmoTranslatable
- * @GRIDColumn(title="Başlık", filterable=true)
- */
- private $title;
- /**
- * @var string
- * @GedmoTranslatable
- */
- private $slug;
- /**
- * @GedmoLocale
- */
- private $locale;
- public function setLocale($locale)
- {
- $this->locale = $locale;
- }
- /**
- * Get id
- *
- * @return integer
- */
- public function getId()
- {
- return $this->id;
- }
- /**
- * Set title
- *
- * @param string $title
- * @return Post
- */
- public function setTitle($title)
- {
- $this->title = $title;
- return $this;
- }
- /**
- * Get title
- *
- * @return string
- */
- public function getTitle()
- {
- return $this->title;
- }
- /**
- * Set slug
- *
- * @param string $slug
- * @return Post
- */
- public function setSlug($slug)
- {
- $this->slug = $slug;
- return $this;
- }
- /**
- * Get slug
- *
- * @return string
- */
- public function getSlug()
- {
- return $this->slug;
- }
- }
- doctrine:
- dbal:
- default_connection: default
- connections:
- default:
- driver: "%database_driver%"
- host: "%database_host%"
- port: "%database_port%"
- dbname: "%database_name%"
- user: "%database_user%"
- password: "%database_password%"
- charset: UTF8
- mapping_types:
- enum: string
- orm:
- auto_generate_proxy_classes: "%kernel.debug%"
- auto_mapping: true
- metadata_cache_driver: redis
- query_cache_driver: redis
- filters:
- softdeleteable:
- class: GedmoSoftDeleteableFilterSoftDeleteableFilter
- enabled: true
- mappings:
- StofDoctrineExtensionsBundle: ~
- gedmo_translatable:
- type: annotation
- prefix: GedmoTranslatableEntity
- dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
- alias: GedmoTranslatable # this one is optional and will default to the name set for the mapping
- is_bundle: false
- gedmo_tree:
- type: annotation
- prefix: GedmoTreeEntity
- dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
- alias: GedmoTree # this one is optional and will default to the name set for the mapping
- is_bundle: false
- stof_doctrine_extensions:
- default_locale: "%locale%"
- translation_fallback: true
- orm:
- default:
- tree: true
- sluggable: true
- translatable: true
- timestampable: true
- softdeleteable: true
- <service id="stof_doctrine_extensions.listener.sluggable" class="%stof_doctrine_extensions.listener.sluggable.class%" public="false">
- <tag name="kernel.cache_warmer" priority="1" />
- <call method="setAnnotationReader">
- <argument type="service" id="annotation_reader" />
- </call>
- </service>
- gedmo.listener.sluggable:
- class: GedmoSluggableSluggableListener
- tags:
- - { name: doctrine.event_subscriber, connection: default, priority: 1 }
- calls:
- - [ setAnnotationReader, [ @annotation_reader ] ]
- DSGAcmeBundleEntityPost:
- type: entity
- table: posts
- gedmo:
- soft_deleteable:
- field_name: deleted_at
- translation:
- locale: locale
- fields:
- id:
- type: integer
- length: 11
- id: true
- generator:
- strategy: AUTO
- title:
- type: string
- length: 255
- gedmo:
- - translatable
- slug:
- type: string
- length: 255
- unique: true
- gedmo:
- translatable: {}
- slug:
- separator: _
- style: camel
- fields:
- - title
- namespace DSGAcmeBundleEntity;
- use GedmoTranslatableTranslatable;
- class Post implements Translatable
- {
- /**
- * @var integer
- */
- private $id;
- /**
- * @var string
- */
- private $title;
- /**
- * @var string
- */
- private $slug;
- /**
- * @var string
- */
- private $locale;
- public function setTranslatableLocale($locale)
- {
- $this->locale = $locale;
- }
- /**
- * Get id
- *
- * @return integer
- */
- public function getId()
- {
- return $this->id;
- }
- /**
- * Set title
- *
- * @param string $title
- * @return Post
- */
- public function setTitle($title)
- {
- $this->title = $title;
- return $this;
- }
- /**
- * Get title
- *
- * @return string
- */
- public function getTitle()
- {
- return $this->title;
- }
- /**
- * Set slug
- *
- * @param string $slug
- * @return Post
- */
- public function setSlug($slug)
- {
- $this->slug = $slug;
- return $this;
- }
- /**
- * Get slug
- *
- * @return string
- */
- public function getSlug()
- {
- return $this->slug;
- }
- }
- $em = $this->getDoctrine()->getEntityManager();
- $article = new Post();
- $article->setTitle('the title');
- $em->persist($article);
- $em->flush();
- $article = $this->getDoctrine()->getRepository('DSGMDayBundle:Post')->find(1);
- $article->setTitle('my title in de');
- $article->setTranslatableLocale('de_de'); // change locale
- $em->persist($article);
- $em->flush();
- CSContentBundleEntityPost:
- type: entity
- table: posts
- repositoryClass: CSContentBundleEntityPostRepository
- gedmo:
- soft_deleteable:
- field_name: deleted_at
- translation:
- locale: locale
- fields:
- id:
- type: integer
- length: 11
- id: true
- generator:
- strategy: AUTO
- title:
- type: string
- length: 500
- gedmo:
- - translatable
- slug:
- type: string
- length: 500
- gedmo:
- slug:
- separator: -
- fields:
- - title
- translatable: {}
- doctrine:
- dbal:
- driver: "%database_driver%"
- host: "%database_host%"
- port: "%database_port%"
- dbname: "%database_name%"
- user: "%database_user%"
- password: "%database_password%"
- charset: UTF8
- orm:
- auto_generate_proxy_classes: "%kernel.debug%"
- auto_mapping: true
- dql:
- string_functions:
- GroupConcat: DoctrineExtensionsQueryMysqlGroupConcat
- IF: DoctrineExtensionsQueryMysqlIfElse
- filters:
- softdeleteable:
- class: GedmoSoftDeleteableFilterSoftDeleteableFilter
- enabled: true
- mappings:
- StofDoctrineExtensionsBundle: ~
- gedmo_tree:
- type: annotation
- prefix: GedmoTreeEntity
- dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
- alias: GedmoTree
- is_bundle: false
- translatable:
- type: annotation
- alias: Gedmo
- prefix: GedmoTranslatableEntity
- # make sure vendor library location is correct
- dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
- gedmo.listener.translatable:
- class: GedmoTranslatableTranslatableListener
- tags:
- - { name: doctrine.event_subscriber, connection: default }
- calls:
- - [ setAnnotationReader, [ @annotation_reader ] ]
- - [ setDefaultLocale, [ %locale% ] ]
- - [ setTranslationFallback, [ false ] ]
- use GedmoMappingAnnotation as Gedmo;
- use GedmoTranslatableTranslatable;
- /**
- * @var string
- *
- * @GedmoTranslatable
- * @ORMColumn(name="name", type="string", length=150, unique=true)
- */
- private $name;
- /**
- * @GedmoTranslatable
- * @GedmoSlug(fields={"name"}, updatable=true)
- * @ORMColumn(type="string", unique=true)
- */
- private $slug;
- parameters:
- locale: en
- doctrine:
- orm:
- auto_generate_proxy_classes: '%kernel.debug%'
- naming_strategy: doctrine.orm.naming_strategy.underscore
- auto_mapping: true
- mappings:
- gedmo_translatable:
- type: annotation
- prefix: GedmoTranslatableEntity
- dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
- alias: GedmoTranslatable # (optional) it will default to the name set for the mapping
- is_bundle: false
- gedmo_translator:
- type: annotation
- prefix: GedmoTranslatorEntity
- dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
- alias: GedmoTranslator # (optional) it will default to the name set for the mapping
- is_bundle: false
- stof_doctrine_extensions:
- default_locale: '%locale%'
- translation_fallback: true
- persist_default_translation: true # I think this does the trick
- orm:
- default:
- sluggable: true
- translatable: true
- use SensioBundleFrameworkExtraBundleConfigurationRoute;
- use SensioBundleFrameworkExtraBundleConfigurationParamConverter;
- /**
- * @Route("/entry/{slug}", name="entry_detail")
- * @ParamConverter("entry", class="AppBundle:Entry", options={"repository_method" = "findOneByCriteria"})
- */
- public function entryDetailAction(Request $request, Entry $entry)
- {
- return $this->render('frontend/entry.html.twig', [
- 'entry' => $entry,
- ]);
- }
- /**
- * Find an entry by criteria
- * Need this special function, because of translatable
- * https://github.com/stof/StofDoctrineExtensionsBundle/issues/232
- *
- * @param $params
- * @return mixed
- */
- public function findOneByCriteria(array $params)
- {
- $query = $this->createQueryBuilder('e');
- $i = 0;
- foreach ($params as $column => $value) {
- if ($i < 1) {
- $query->where("e.$column = :$column");
- } else {
- $query->andWhere("e.$column = :$column");
- }
- $query->setParameter($column, $value);
- $i++;
- }
- $query = $query->getQuery();
- $query->setHint(DoctrineORMQuery::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\Translatable\Query\TreeWalker\TranslationWalker');
- return $query->getOneOrNullResult();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement