src/Services/PageBuilder.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Services;
  3. use Cocur\Slugify\Slugify;
  4. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  5. class PageBuilder
  6. {
  7.     public function __construct(ParameterBagInterface $params)
  8.     {
  9.         $this->params $params;
  10.         $this->slugify = new Slugify(['regexp' => '/([^A-Za-z0-9.]|-)+/']);
  11.     }
  12.     public function compile($source) {
  13.         $arr json_decode($source);
  14.         $comp "";
  15.         foreach($arr->sections as $section)
  16.         {
  17.             $comp .= $this->compileSection($section);
  18.         }
  19.         return $comp;
  20.     }
  21.     private function compileSection($section) {
  22.         $rows "";
  23.         foreach($section->rows as $row) {
  24.             $rows .= $this->compileRow($row);
  25.         }
  26.         return "<section><div class='container'>".$rows."</div></section>";
  27.     }
  28.     private function compileRow($row) {
  29.         $columns "";
  30.         foreach ($row->columns as $column)
  31.             $columns .= $this->compileColumn($column);
  32.         return "<div class='row'>".$columns."</div>";
  33.     }
  34.     private function compileColumn($column) {
  35.         $blocks "";
  36.         foreach ($column->blocks as $block)
  37.             $blocks .= $this->compileBlock($block);
  38.         return "<div class='col'>".$blocks."</div>";
  39.     }
  40.     private function compileBlock($block) {
  41.         $content = isset($block->content) ? $block->content "";
  42.         return "<div class='block'>".$content."</div>";
  43.     }
  44. }