| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- <?php
 
- namespace App\Admin\Extensions\Field;
 
- use Encore\Admin\Admin;
 
- use Encore\Admin\Form;
 
- use Encore\Admin\Form\Field;
 
- use Illuminate\Support\Collection;
 
- /**
 
-  * Class Template
 
-  * 表单模板
 
-  * @method Field\Text           text($column, $label = '')
 
-  * @method Field\Checkbox       checkbox($column, $label = '')
 
-  * @method Field\Radio          radio($column, $label = '')
 
-  * @method Field\Select         select($column, $label = '')
 
-  * @method Field\MultipleSelect multipleSelect($column, $label = '')
 
-  * @method Field\Textarea       textarea($column, $label = '')
 
-  * @method Field\Hidden         hidden($column, $label = '')
 
-  * @method Field\Id             id($column, $label = '')
 
-  * @method Field\Ip             ip($column, $label = '')
 
-  * @method Field\Url            url($column, $label = '')
 
-  * @method Field\Color          color($column, $label = '')
 
-  * @method Field\Email          email($column, $label = '')
 
-  * @method Field\Mobile         mobile($column, $label = '')
 
-  * @method Field\Slider         slider($column, $label = '')
 
-  * @method Field\Map            map($latitude, $longitude, $label = '')
 
-  * @method Field\Editor         editor($column, $label = '')
 
-  * @method Field\File           file($column, $label = '')
 
-  * @method Field\Image          image($column, $label = '')
 
-  * @method Field\Date           date($column, $label = '')
 
-  * @method Field\Datetime       datetime($column, $label = '')
 
-  * @method Field\Time           time($column, $label = '')
 
-  * @method Field\Year           year($column, $label = '')
 
-  * @method Field\Month          month($column, $label = '')
 
-  * @method Field\DateRange      dateRange($start, $end, $label = '')
 
-  * @method Field\DateTimeRange  datetimeRange($start, $end, $label = '')
 
-  * @method Field\TimeRange      timeRange($start, $end, $label = '')
 
-  * @method Field\Number         number($column, $label = '')
 
-  * @method Field\Currency       currency($column, $label = '')
 
-  * @method Field\HasMany        hasMany($relationName, $callback)
 
-  * @method Field\SwitchField    switch($column, $label = '')
 
-  * @method Field\Display        display($column, $label = '')
 
-  * @method Field\Rate           rate($column, $label = '')
 
-  * @method Field\Divide         divider()
 
-  * @method Field\Password       password($column, $label = '')
 
-  * @method Field\Decimal        decimal($column, $label = '')
 
-  * @method Field\Html           html($html, $label = '')
 
-  * @method Field\Tags           tags($column, $label = '')
 
-  * @method Field\Icon           icon($column, $label = '')
 
-  * @method Field\Embeds         embeds($column, $label = '')
 
-  */
 
- class Template
 
- {
 
-     /**
 
-      * 对应表单
 
-      * @var Collection
 
-      */
 
-     protected $templates;
 
-     protected $nowId;
 
-     public function __construct()
 
-     {
 
-         $this->templates=new Collection();
 
-     }
 
-     public function setTemplatesId($id)
 
-     {
 
-         $this->nowId=$id;
 
-         if (!$this->templates->has($id)) {
 
-             $this->templates->put($id, new Collection());
 
-         }
 
-         return $this;
 
-     }
 
-     protected function pushField(Field $field)
 
-     {
 
-         $this->templates->get($this->nowId)->push($field);
 
-     }
 
-     protected function getHtmlAndScript()
 
-     {
 
-         $htmls = [];
 
-         $scripts = [];
 
-         /* @var Field $field */
 
-         foreach ($this->templates as $key => $template) {
 
-             $html='';
 
-             $script=[];
 
-             foreach ($template as $field) {
 
-                 //when field render, will push $script to Admin
 
-                 $html.= $field->render();
 
-                 /*
 
-                  * Get and remove the last script of Admin::$script stack.
 
-                  */
 
-                 if ($field->getScript()) {
 
-                     $script[] = array_pop(Admin::$script);
 
-                 }
 
-             }
 
-             $htmls[$key]=$html;
 
-             $scripts[$key]=implode("\r\n", $script);
 
-         }
 
-         return [$htmls, $scripts];
 
-     }
 
-     /**
 
-      * Add nested-form fields dynamically.
 
-      *
 
-      * @param string $method
 
-      * @param array  $arguments
 
-      *
 
-      * @return mixed
 
-      */
 
-     public function __call($method, $arguments)
 
-     {
 
-         if ($className = Form::findFieldClass($method)) {
 
-             $column = array_get($arguments, 0, '');
 
-             /* @var Field $field */
 
-             $field = new $className($column, array_slice($arguments, 1));
 
-             $this->pushField($field);
 
-             return $field;
 
-         }
 
-         return $this;
 
-     }
 
-     public function render()
 
-     {
 
-         list($template, $script) = $this->getHtmlAndScript();
 
-         return view('admin.field.template')->with('templates', $template)->with('scripts', $script)->render();
 
-     }
 
- }
 
 
  |