jqh 4 年之前
父节点
当前提交
382873e926
共有 2 个文件被更改,包括 18 次插入16 次删除
  1. 12 12
      src/Form/Field.php
  2. 6 4
      src/Form/NestedForm.php

+ 12 - 12
src/Form/Field.php

@@ -30,6 +30,8 @@ class Field implements Renderable
 
     const BUILD_IGNORE = 'build-ignore';
 
+    const NORMAL_CLASS = '_normal_';
+
     /**
      * Element value.
      *
@@ -925,12 +927,20 @@ class Field implements Renderable
     public function getElementClass()
     {
         if (! $this->elementClass) {
-            $this->elementClass = $this->normalizeElementClass((array) $this->getElementName());
+            $this->elementClass = $this->getDefaultElementClass();
         }
 
         return $this->elementClass;
     }
 
+    /**
+     * @return array
+     */
+    protected function getDefaultElementClass()
+    {
+        return array_merge($this->normalizeElementClass((array) $this->getElementName()), [static::NORMAL_CLASS]);
+    }
+
     /**
      * @param string|array $class
      *
@@ -1040,17 +1050,7 @@ class Field implements Renderable
      */
     public function removeElementClass($class)
     {
-        $delClass = [];
-
-        if (is_string($class) || is_array($class)) {
-            $delClass = (array) $class;
-        }
-
-        foreach ($delClass as $del) {
-            if (($key = array_search($del, $this->elementClass))) {
-                unset($this->elementClass[$key]);
-            }
-        }
+        Helper::deleteByValue($this->elementClass, $class);
 
         return $this;
     }

+ 6 - 4
src/Form/NestedForm.php

@@ -358,12 +358,12 @@ class NestedForm extends WidgetForm
             foreach ($column as $k => $name) {
                 $errorKey[$k] = sprintf('%s.%s.%s', $this->relationName, $key, $name);
                 $elementName[$k] = sprintf('%s[%s][%s]', $this->formatName(), $key, $name);
-                $elementClass[$k] = [$this->formatClass(), $this->formatClass($name)];
+                $elementClass[$k] = [$this->formatClass(), $this->formatClass($name), $this->formatClass($name, false)];
             }
         } else {
             $errorKey = sprintf('%s.%s.%s', $this->relationName, $key, $column);
             $elementName = sprintf('%s[%s][%s]', $this->formatName(), $key, $column);
-            $elementClass = [$this->formatClass(), $this->formatClass($column)];
+            $elementClass = [$this->formatClass(), $this->formatClass($column), $this->formatClass($column, false)];
         }
 
         return $field->setErrorKey($errorKey)
@@ -371,9 +371,11 @@ class NestedForm extends WidgetForm
             ->setElementClass($elementClass);
     }
 
-    protected function formatClass($name = null)
+    protected function formatClass($name = null, bool $append = true)
     {
-        return str_replace('.', '_', $name ?: $this->relationName).'_'.$this->key;
+        $class = str_replace('.', '_', $name ?: $this->relationName);
+
+        return $append ? ($class.'_'.$this->key) : $class;
     }
 
     protected function formatName($name = null)