Advertisement
Guest User

Untitled

a guest
Jan 2nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.46 KB | None | 0 0
  1. CSContentBundleEntityPost:
  2. type: entity
  3. table: posts
  4. repositoryClass: CSContentBundleEntityPostRepository
  5. gedmo:
  6. soft_deleteable:
  7. field_name: deleted_at
  8. translation:
  9. locale: locale
  10. fields:
  11. id:
  12. type: integer
  13. length: 11
  14. id: true
  15. generator:
  16. strategy: AUTO
  17. title:
  18. type: string
  19. length: 500
  20. gedmo:
  21. - translatable
  22. slug:
  23. type: string
  24. length: 500
  25. gedmo:
  26. translatable: {}
  27. slug:
  28. separator: -
  29. fields:
  30. - title
  31.  
  32. <?php
  33.  
  34. namespace CSContentBundleEntity;
  35.  
  36. use DoctrineORMMapping as ORM;
  37. use GedmoTranslatableTranslatable;
  38. use GedmoMappingAnnotation as Gedmo;
  39. use APYDataGridBundleGridMapping as GRID;
  40.  
  41. /**
  42. * Post
  43. * @GedmoSoftDeleteable(fieldName="deleted_at", timeAware=false)
  44. * @GRIDSource(columns="id,title,is_active,created_at,updated_at")
  45. */
  46. class Post implements Translatable
  47. {
  48. /**
  49. * @var integer
  50. */
  51. private $id;
  52.  
  53. /**
  54. * @var string
  55. * @GedmoTranslatable
  56. * @GRIDColumn(title="Başlık", filterable=true)
  57. */
  58. private $title;
  59.  
  60. /**
  61. * @var string
  62. * @GedmoTranslatable
  63. */
  64. private $slug;
  65.  
  66. /**
  67. * @GedmoLocale
  68. */
  69. private $locale;
  70.  
  71. public function setLocale($locale)
  72. {
  73. $this->locale = $locale;
  74. }
  75.  
  76.  
  77. /**
  78. * Get id
  79. *
  80. * @return integer
  81. */
  82. public function getId()
  83. {
  84. return $this->id;
  85. }
  86.  
  87. /**
  88. * Set title
  89. *
  90. * @param string $title
  91. * @return Post
  92. */
  93. public function setTitle($title)
  94. {
  95. $this->title = $title;
  96.  
  97. return $this;
  98. }
  99.  
  100. /**
  101. * Get title
  102. *
  103. * @return string
  104. */
  105. public function getTitle()
  106. {
  107. return $this->title;
  108. }
  109.  
  110. /**
  111. * Set slug
  112. *
  113. * @param string $slug
  114. * @return Post
  115. */
  116. public function setSlug($slug)
  117. {
  118. $this->slug = $slug;
  119.  
  120. return $this;
  121. }
  122.  
  123. /**
  124. * Get slug
  125. *
  126. * @return string
  127. */
  128. public function getSlug()
  129. {
  130. return $this->slug;
  131. }
  132. }
  133.  
  134. doctrine:
  135. dbal:
  136. default_connection: default
  137. connections:
  138. default:
  139. driver: "%database_driver%"
  140. host: "%database_host%"
  141. port: "%database_port%"
  142. dbname: "%database_name%"
  143. user: "%database_user%"
  144. password: "%database_password%"
  145. charset: UTF8
  146. mapping_types:
  147. enum: string
  148. orm:
  149. auto_generate_proxy_classes: "%kernel.debug%"
  150. auto_mapping: true
  151. metadata_cache_driver: redis
  152. query_cache_driver: redis
  153. filters:
  154. softdeleteable:
  155. class: GedmoSoftDeleteableFilterSoftDeleteableFilter
  156. enabled: true
  157. mappings:
  158. StofDoctrineExtensionsBundle: ~
  159. gedmo_translatable:
  160. type: annotation
  161. prefix: GedmoTranslatableEntity
  162. dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
  163. alias: GedmoTranslatable # this one is optional and will default to the name set for the mapping
  164. is_bundle: false
  165. gedmo_tree:
  166. type: annotation
  167. prefix: GedmoTreeEntity
  168. dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
  169. alias: GedmoTree # this one is optional and will default to the name set for the mapping
  170. is_bundle: false
  171.  
  172. stof_doctrine_extensions:
  173. default_locale: "%locale%"
  174. translation_fallback: true
  175. orm:
  176. default:
  177. tree: true
  178. sluggable: true
  179. translatable: true
  180. timestampable: true
  181. softdeleteable: true
  182.  
  183. <service id="stof_doctrine_extensions.listener.sluggable" class="%stof_doctrine_extensions.listener.sluggable.class%" public="false">
  184. <tag name="kernel.cache_warmer" priority="1" />
  185. <call method="setAnnotationReader">
  186. <argument type="service" id="annotation_reader" />
  187. </call>
  188. </service>
  189.  
  190. gedmo.listener.sluggable:
  191. class: GedmoSluggableSluggableListener
  192. tags:
  193. - { name: doctrine.event_subscriber, connection: default, priority: 1 }
  194. calls:
  195. - [ setAnnotationReader, [ @annotation_reader ] ]
  196.  
  197. DSGAcmeBundleEntityPost:
  198. type: entity
  199. table: posts
  200. gedmo:
  201. soft_deleteable:
  202. field_name: deleted_at
  203. translation:
  204. locale: locale
  205. fields:
  206. id:
  207. type: integer
  208. length: 11
  209. id: true
  210. generator:
  211. strategy: AUTO
  212. title:
  213. type: string
  214. length: 255
  215. gedmo:
  216. - translatable
  217. slug:
  218. type: string
  219. length: 255
  220. unique: true
  221. gedmo:
  222. translatable: {}
  223. slug:
  224. separator: _
  225. style: camel
  226. fields:
  227. - title
  228.  
  229. namespace DSGAcmeBundleEntity;
  230.  
  231. use GedmoTranslatableTranslatable;
  232.  
  233. class Post implements Translatable
  234. {
  235. /**
  236. * @var integer
  237. */
  238. private $id;
  239.  
  240. /**
  241. * @var string
  242. */
  243. private $title;
  244.  
  245. /**
  246. * @var string
  247. */
  248. private $slug;
  249.  
  250. /**
  251. * @var string
  252. */
  253. private $locale;
  254.  
  255. public function setTranslatableLocale($locale)
  256. {
  257. $this->locale = $locale;
  258. }
  259.  
  260.  
  261. /**
  262. * Get id
  263. *
  264. * @return integer
  265. */
  266. public function getId()
  267. {
  268. return $this->id;
  269. }
  270.  
  271. /**
  272. * Set title
  273. *
  274. * @param string $title
  275. * @return Post
  276. */
  277. public function setTitle($title)
  278. {
  279. $this->title = $title;
  280.  
  281. return $this;
  282. }
  283.  
  284. /**
  285. * Get title
  286. *
  287. * @return string
  288. */
  289. public function getTitle()
  290. {
  291. return $this->title;
  292. }
  293.  
  294. /**
  295. * Set slug
  296. *
  297. * @param string $slug
  298. * @return Post
  299. */
  300. public function setSlug($slug)
  301. {
  302. $this->slug = $slug;
  303.  
  304. return $this;
  305. }
  306.  
  307. /**
  308. * Get slug
  309. *
  310. * @return string
  311. */
  312. public function getSlug()
  313. {
  314. return $this->slug;
  315. }
  316. }
  317.  
  318. $em = $this->getDoctrine()->getEntityManager();
  319. $article = new Post();
  320. $article->setTitle('the title');
  321. $em->persist($article);
  322. $em->flush();
  323.  
  324. $article = $this->getDoctrine()->getRepository('DSGMDayBundle:Post')->find(1);
  325. $article->setTitle('my title in de');
  326. $article->setTranslatableLocale('de_de'); // change locale
  327. $em->persist($article);
  328. $em->flush();
  329.  
  330. CSContentBundleEntityPost:
  331. type: entity
  332. table: posts
  333. repositoryClass: CSContentBundleEntityPostRepository
  334. gedmo:
  335. soft_deleteable:
  336. field_name: deleted_at
  337. translation:
  338. locale: locale
  339. fields:
  340. id:
  341. type: integer
  342. length: 11
  343. id: true
  344. generator:
  345. strategy: AUTO
  346. title:
  347. type: string
  348. length: 500
  349. gedmo:
  350. - translatable
  351. slug:
  352. type: string
  353. length: 500
  354. gedmo:
  355. slug:
  356. separator: -
  357. fields:
  358. - title
  359. translatable: {}
  360.  
  361. doctrine:
  362. dbal:
  363. driver: "%database_driver%"
  364. host: "%database_host%"
  365. port: "%database_port%"
  366. dbname: "%database_name%"
  367. user: "%database_user%"
  368. password: "%database_password%"
  369. charset: UTF8
  370. orm:
  371. auto_generate_proxy_classes: "%kernel.debug%"
  372. auto_mapping: true
  373. dql:
  374. string_functions:
  375. GroupConcat: DoctrineExtensionsQueryMysqlGroupConcat
  376. IF: DoctrineExtensionsQueryMysqlIfElse
  377. filters:
  378. softdeleteable:
  379. class: GedmoSoftDeleteableFilterSoftDeleteableFilter
  380. enabled: true
  381. mappings:
  382. StofDoctrineExtensionsBundle: ~
  383. gedmo_tree:
  384. type: annotation
  385. prefix: GedmoTreeEntity
  386. dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
  387. alias: GedmoTree
  388. is_bundle: false
  389. translatable:
  390. type: annotation
  391. alias: Gedmo
  392. prefix: GedmoTranslatableEntity
  393. # make sure vendor library location is correct
  394. dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
  395.  
  396. gedmo.listener.translatable:
  397. class: GedmoTranslatableTranslatableListener
  398. tags:
  399. - { name: doctrine.event_subscriber, connection: default }
  400. calls:
  401. - [ setAnnotationReader, [ @annotation_reader ] ]
  402. - [ setDefaultLocale, [ %locale% ] ]
  403. - [ setTranslationFallback, [ false ] ]
  404.  
  405. use GedmoMappingAnnotation as Gedmo;
  406. use GedmoTranslatableTranslatable;
  407.  
  408. /**
  409. * @var string
  410. *
  411. * @GedmoTranslatable
  412. * @ORMColumn(name="name", type="string", length=150, unique=true)
  413. */
  414. private $name;
  415.  
  416. /**
  417. * @GedmoTranslatable
  418. * @GedmoSlug(fields={"name"}, updatable=true)
  419. * @ORMColumn(type="string", unique=true)
  420. */
  421. private $slug;
  422.  
  423. parameters:
  424. locale: en
  425.  
  426. doctrine:
  427. orm:
  428. auto_generate_proxy_classes: '%kernel.debug%'
  429. naming_strategy: doctrine.orm.naming_strategy.underscore
  430. auto_mapping: true
  431. mappings:
  432. gedmo_translatable:
  433. type: annotation
  434. prefix: GedmoTranslatableEntity
  435. dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
  436. alias: GedmoTranslatable # (optional) it will default to the name set for the mapping
  437. is_bundle: false
  438. gedmo_translator:
  439. type: annotation
  440. prefix: GedmoTranslatorEntity
  441. dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
  442. alias: GedmoTranslator # (optional) it will default to the name set for the mapping
  443. is_bundle: false
  444.  
  445. stof_doctrine_extensions:
  446. default_locale: '%locale%'
  447. translation_fallback: true
  448. persist_default_translation: true # I think this does the trick
  449. orm:
  450. default:
  451. sluggable: true
  452. translatable: true
  453.  
  454. use SensioBundleFrameworkExtraBundleConfigurationRoute;
  455. use SensioBundleFrameworkExtraBundleConfigurationParamConverter;
  456.  
  457. /**
  458. * @Route("/entry/{slug}", name="entry_detail")
  459. * @ParamConverter("entry", class="AppBundle:Entry", options={"repository_method" = "findOneByCriteria"})
  460. */
  461. public function entryDetailAction(Request $request, Entry $entry)
  462. {
  463. return $this->render('frontend/entry.html.twig', [
  464. 'entry' => $entry,
  465. ]);
  466. }
  467.  
  468. /**
  469. * Find an entry by criteria
  470. * Need this special function, because of translatable
  471. * https://github.com/stof/StofDoctrineExtensionsBundle/issues/232
  472. *
  473. * @param $params
  474. * @return mixed
  475. */
  476. public function findOneByCriteria(array $params)
  477. {
  478. $query = $this->createQueryBuilder('e');
  479. $i = 0;
  480. foreach ($params as $column => $value) {
  481. if ($i < 1) {
  482. $query->where("e.$column = :$column");
  483. } else {
  484. $query->andWhere("e.$column = :$column");
  485. }
  486. $query->setParameter($column, $value);
  487. $i++;
  488. }
  489. $query = $query->getQuery();
  490. $query->setHint(DoctrineORMQuery::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\Translatable\Query\TreeWalker\TranslationWalker');
  491. return $query->getOneOrNullResult();
  492. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement