jqh %!s(int64=5) %!d(string=hai) anos
pai
achega
d7436508cb
Modificáronse 5 ficheiros con 35 adicións e 52 borrados
  1. 0 8
      src/Layout/Buildable.php
  2. 15 17
      src/Layout/Column.php
  3. 3 7
      src/Layout/Content.php
  4. 12 20
      src/Layout/Row.php
  5. 5 0
      src/Support/Helper.php

+ 0 - 8
src/Layout/Buildable.php

@@ -1,8 +0,0 @@
-<?php
-
-namespace Dcat\Admin\Layout;
-
-interface Buildable
-{
-    public function build();
-}

+ 15 - 17
src/Layout/Column.php

@@ -2,10 +2,10 @@
 
 namespace Dcat\Admin\Layout;
 
-use Dcat\Admin\Grid;
 use Dcat\Admin\Support\Helper;
+use Illuminate\Contracts\Support\Renderable;
 
-class Column implements Buildable
+class Column implements Renderable
 {
     /**
      * grid system prefix width.
@@ -77,33 +77,29 @@ class Column implements Buildable
             call_user_func($content, $row);
         }
 
-        ob_start();
-
-        $row->build();
-
-        return $this->append(ob_get_clean());
+        return $this->append($row);
     }
 
     /**
      * Build column html.
+     *
+     * @return string
      */
-    public function build()
+    public function render()
     {
-        $this->startColumn();
+        $html = $this->startColumn();
 
         foreach ($this->contents as $content) {
-            if ($content instanceof Grid) {
-                echo $content->render();
-            } else {
-                echo Helper::render($content);
-            }
+            $html .= Helper::render($content);
         }
 
-        $this->endColumn();
+        return $html.$this->endColumn();
     }
 
     /**
      * Start column.
+     *
+     * @return string
      */
     protected function startColumn()
     {
@@ -112,14 +108,16 @@ class Column implements Buildable
             return "col-$key-$value";
         })->implode(' ');
 
-        echo "<div class=\"{$classnName}\">";
+        return "<div class=\"{$classnName}\">";
     }
 
     /**
      * End column.
+     *
+     * @return string
      */
     protected function endColumn()
     {
-        echo '</div>';
+        return '</div>';
     }
 }

+ 3 - 7
src/Layout/Content.php

@@ -251,17 +251,13 @@ class Content implements Renderable
      */
     public function build()
     {
-        ob_start();
+        $html = '';
 
         foreach ($this->rows as $row) {
-            $row->build();
+            $html .= $row->render();
         }
 
-        $contents = ob_get_contents();
-
-        ob_end_clean();
-
-        return $contents;
+        return $html;
     }
 
     /**

+ 12 - 20
src/Layout/Row.php

@@ -4,7 +4,7 @@ namespace Dcat\Admin\Layout;
 
 use Illuminate\Contracts\Support\Renderable;
 
-class Row implements Buildable, Renderable
+class Row implements Renderable
 {
     /**
      * @var Column[]
@@ -48,45 +48,37 @@ class Row implements Buildable, Renderable
 
     /**
      * Build row column.
+     *
+     * @return string
      */
-    public function build()
+    public function render()
     {
-        $this->startRow();
+        $html = $this->startRow();
 
         foreach ($this->columns as $column) {
-            $column->build();
+            $html .= $column->render();
         }
 
-        $this->endRow();
+        return $html.$this->endRow();
     }
 
     /**
      * Start row.
+     *
+     * @return string
      */
     protected function startRow()
     {
-        echo '<div class="row">';
+        return '<div class="row">';
     }
 
     /**
      * End column.
-     */
-    protected function endRow()
-    {
-        echo '</div>';
-    }
-
-    /**
-     * Render row.
      *
      * @return string
      */
-    public function render()
+    protected function endRow()
     {
-        ob_start();
-
-        $this->build();
-
-        return ob_get_clean();
+        return '</div>';
     }
 }

+ 5 - 0
src/Support/Helper.php

@@ -2,6 +2,7 @@
 
 namespace Dcat\Admin\Support;
 
+use Dcat\Admin\Grid;
 use Illuminate\Contracts\Support\Arrayable;
 use Illuminate\Contracts\Support\Htmlable;
 use Illuminate\Contracts\Support\Renderable;
@@ -79,6 +80,10 @@ class Helper
             return $value;
         }
 
+        if ($value instanceof Grid) {
+            return (string) $value->render();
+        }
+
         if ($value instanceof \Closure) {
             $newThis && $value = $value->bindTo($newThis);