Browse Source

增加 appendRule 方法

xaboy 5 years ago
parent
commit
fd2e47cb4a

+ 14 - 1
src/Driver/CustomComponent.php

@@ -40,6 +40,8 @@ class CustomComponent implements CustomComponentInterface, \JsonSerializable, \A
 
 
     protected $defaultProps = [];
     protected $defaultProps = [];
 
 
+    protected $appendRule = [];
+
     /**
     /**
      * CustomComponent constructor.
      * CustomComponent constructor.
      * @param null|string $type
      * @param null|string $type
@@ -69,7 +71,13 @@ class CustomComponent implements CustomComponentInterface, \JsonSerializable, \A
         return lcfirst(basename(str_replace('\\', '/', get_class($this))));
         return lcfirst(basename(str_replace('\\', '/', get_class($this))));
     }
     }
 
 
-    public function build()
+    public function appendRule($name, $value)
+    {
+        $this->appendRule[$name] = $name == 'props' ? (object)$value : $value;
+        return $this;
+    }
+
+    public function getRule()
     {
     {
         return array_merge(
         return array_merge(
             $this->parseBaseRule(),
             $this->parseBaseRule(),
@@ -81,6 +89,11 @@ class CustomComponent implements CustomComponentInterface, \JsonSerializable, \A
         );
         );
     }
     }
 
 
+    public function build()
+    {
+        return $this->appendRule + $this->getRule();
+    }
+
     public function jsonSerialize()
     public function jsonSerialize()
     {
     {
         return $this->build();
         return $this->build();

+ 2 - 2
src/Driver/FormOptionsComponent.php

@@ -19,9 +19,9 @@ abstract class FormOptionsComponent extends FormComponent
 {
 {
     use OptionsRule;
     use OptionsRule;
 
 
-    public function build()
+    public function getRule()
     {
     {
-        $rule = parent::build();
+        $rule = parent::getRule();
 
 
         return array_merge($rule, $this->parseOptionsRule());
         return array_merge($rule, $this->parseOptionsRule());
     }
     }

+ 1 - 1
src/UI/Elm/Components/Hidden.php

@@ -37,7 +37,7 @@ class Hidden extends FormComponent
     /**
     /**
      * @return array
      * @return array
      */
      */
-    public function build()
+    public function getRule()
     {
     {
         return [
         return [
             'type' => $this->type,
             'type' => $this->type,

+ 1 - 1
src/UI/Iview/Components/Hidden.php

@@ -37,7 +37,7 @@ class Hidden extends FormComponent
     /**
     /**
      * @return array
      * @return array
      */
      */
-    public function build()
+    public function getRule()
     {
     {
         return [
         return [
             'type' => $this->type,
             'type' => $this->type,

+ 3 - 4
src/UI/Iview/Components/Switches.php

@@ -74,11 +74,10 @@ class Switches extends FormComponent
     /**
     /**
      * @return array
      * @return array
      */
      */
-    public function build()
+    public function getRule()
     {
     {
-        $rule = parent::build();
-        if (!count($rule['props']->slot)) unset($rule['props']->slot);
-
+        $rule = parent::getRule();
+        if (isset($rule['props']['slot']) && !count($rule['props']['slot'])) unset($rule['props']['slot']);
         return $rule;
         return $rule;
     }
     }