Pro Yearly is on sale from $80 to $50! »

Master Data Management with Pimcore

Master Data Management with Pimcore

PHP Track at FrOSCon 2018 [en]

6e15b56fcb16fae0747810827be8ce8f?s=128

Christoph Lühr

August 25, 2018
Tweet

Transcript

  1. Christoph Lühr @chluehr / FrOSCon PHP-Track 2018-08-25 Master Data Management

    with
  2. "Pimcore is the leading PHP Data Management Platform" Christoph Lühr

  3. None
  4. Image source: http://www.flickr.com/photos/robby_van_moor/5702589201/ CC BY-ND 2.0

  5. None
  6. (#) Internet

  7. (#) Digital Transformation

  8. None
  9. Unicode Character 'HAPPY PERSON RAISING ONE HAND' (U+1F64B)

  10. Master Data Management

  11. Single SourcE Of Truth

  12. None
  13. None
  14. None
  15. None
  16. None
  17. Image source: https://instagram.com/p/wse6D4LtB1/

  18. By Persian Poet Gal, Surachit, Winstonza, Lord Leatherface, Leptictidium, AnonMoos,

    Chongtin, RuM, Popolon, Uwe Gille, Wyvernoid, Kikos, Hisagi, LambdaCorp, Tux the penguin, Patrol110, 2(L.L.K.)2, Мелкијадес, Homo lupus, Erikire, Jcfidy, Angelito7, Kandar, Router, Lord Leatherface, Whidou, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=39183625
  19. None
  20. None
  21. None
  22. None
  23. None
  24. Image source: http://icons8.com/web-app/1475/Database / Document by useiconic.com from the Noun

    Project
  25. Alternatives?

  26. Specialized (PIM - MDM)

  27. None
  28. None
  29. None
  30. Wrench by i cons from the Noun Project

  31. Snail by Juraj Sedlák from the Noun Project

  32. CMS (with Extensions)

  33. None
  34. None
  35. None
  36. None
  37. (!fun) clock by Ananth from the Noun Project

  38. Framework (+ Bundles)

  39. None
  40. None
  41. None
  42. $$$ clock by Ananth from the Noun Project

  43. None
  44. None
  45. Von Free Software Foundation - gnu.org/graphics/license-logos.html, Gemeinfrei, https://commons.wikimedia.org/w/index.php?curid=5393454

  46. None
  47. 7.1+

  48. Image source: http://symfony.com/logo 3.4

  49. None
  50. None
  51. Von Carlos Prioglio - http://redis.io/images/redis-logo.svg, Logo, https://de.wikipedia.org/w/index.php?curid=8041512

  52. None
  53. composer \ create-project \ pimcore/pimcore \ my-project

  54. None
  55. +

  56. None
  57. +

  58. None
  59. (Master) Data Management

  60. Image source: http://blog.feixen.de/gefunden-im-web/fliesentische/

  61. Image source: http://icons8.com/web-app/1475/Database

  62. Image source: http://icons8.com/web-app/1475/Database

  63. Image source: http://icons8.com/web-app/1475/Database

  64. None
  65. None
  66. # Object # Classes

  67. None
  68. +

  69. None
  70. None
  71. 40+ Field Types

  72. None
  73. None
  74. None
  75. None
  76. Versions Diffs / Schedules / ...

  77. None
  78. Grids Edit / CSV / Operators / ...

  79. None
  80. None
  81. None
  82. Custom Views + Perspectives ( Role-Based )

  83. None
  84. Variants & Inheritance

  85. None
  86. Permissions Op. / Path / Role-Based

  87. None
  88. Workflows State / Action / Events

  89. None
  90. None
  91. E-Commerce Framework

  92. None
  93. CRM Framework

  94. None
  95. None
  96. Image source: http://www.flickr.com/photos/rietje/76566707/ CC BY 2.0

  97. SHOW ME THE CODE!

  98. <?php ORM ?> + DB Migrations

  99. // Object creation $person = Object\Person::create(array( 'name' => 'Chris', 'description'

    => 'Fast talker' )); $person->setWeight(75); $person->save();
  100. // Object retrieval $personList = new Object\Person\Listing(); $personList->setOrderKey("weight"); $personList->setOrder("DESC"); foreach

    ($personList as $person) { ... $results = Object\Person::getByWeight(75);
  101. PHP / REST / WebDAV

  102. None
  103. None
  104. None
  105. +

  106. +

  107. +

  108. Previews Formats & Thumbnails

  109. Libre Office Ghostscript Image Magick Ffmpeg [..]

  110. Pipes Processing Images

  111. None
  112. None
  113. None
  114. None
  115. WANTED WANTED

  116. None
  117. // using piplines for asset formats in code: $asset->getThumbnail("marioPipe"); //

    => /thumb_marioPipe/img_0037@2x.jpeg $asset->getThumbnail("marioPipe")->getHTML(); // => <img ... srcset / media queries
  118. None
  119. +

  120. None
  121. None
  122. +

  123. !

  124. Image source: https://www.pimcore.org/ +

  125. Image source: https://www.pimcore.org/

  126. Web 2 Print (PDF Generation)

  127. Image source: https://www.pimcore.org/ +

  128. Image source: https://www.pimcore.org/

  129. Image source: https://www.pimcore.org/

  130. Image source: https://www.pimcore.org/ +

  131. Image source: https://www.pimcore.org/

  132. Image source: https://www.pimcore.org/

  133. Image source: https://www.pdfreactor.com/

  134. SHOW ME THE CODE!

  135. M VC

  136. # Pimcore # Directory Layout # /project

  137. CONTROLLER

  138. VIEW

  139. views/Content/portal.html.twig: <div class="my-html-block"> {{ pimcore_image('mugshot') }} {{ pimcore_textarea('wanted') }} <div>

  140. <?php # app/Resources/views/Blog/list.html.php ?> <html> <body> <h1>List</h1> <h2><?= $this->input("headline"); ?></h2>

    </body> </html>
  141. Image source: https://www.pimcore.org/

  142. <?php # src/AppBundle/Controller/BlogController.php: # [..] class BlogController extends FrontendController {

    public function detailAction(Request $request) { $id = $request->get('id'); $article = BlogArticle::getById($id); $this->view->article = $article; } }
  143. <?php class ContentController { /** * Optional: * @Template("AppBundle:Content:portal.html.twig") *

    @Route("/news/portalpage") */ public function portalAction( ) { // custom code: // - retrieve data // - .. // - populate view } }
  144. <?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use

    Symfony\Component\HttpFoundation\Request; class ContentController extends Controller { /** * @Template("AppBundle:Content:portal.html.twig") -- Optional! * @Route("/news/portalpage") -- Optional! * * @param Request $request * @param array $templateVars * @return array */ public function portalAction(Request $request, array $templateVars) { $templateVars = $this->defaultAction($request, $templateVars); $templateVars['isPortal'] = true; return $templateVars; } }
  145. References

  146. None
  147. None
  148. None
  149. None
  150. None
  151. None
  152. Demo

  153. Thanks! Questions? Christoph Lühr luehr@r-pentomino.de christoph.luehr@basilicom.de @chluehr Slides license Attribution-NonCommercial-ShareAlike

    3.0 http://creativecommons.org/licenses/by-nc-sa/3.0/