Field.php 2.6 KB
<?php
/**
 * +-----------------------------------------------------------------------------------------------------------------------
 * 重写laravel-admin Form\Field 类
 * +-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Rewrite\Form
 * @package   App\Admin\Rewrite\Form
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年11月12日13:49:31
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Rewrite\Form;

use Encore\Admin\Form\Field as EncoreField;

/**
 * Class Field
 *
 * @category  App\Admin\Rewrite\Form
 * @package   App\Admin\Rewrite\Form
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年11月12日13:49:31
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class Field extends EncoreField
{
    /**
     * Form element label classes.
     *
     * add By Richer 于2019年4月16日11:19:59 为标签增加自定义的样式
     *
     * @var array
     */
    protected $elementLabelClass = [];

    /**
     * @return array
     */
    public function getViewElementClasses(): array
    {
        if ($this->horizontal) {
            return [
                'label'      => "col-sm-{$this->width['label']} "  . implode(' ', $this->elementLabelClass),
                'field'      => "col-sm-{$this->width['field']}",
                'form-group' => $this->getGroupClass(true),
            ];
        }

        return ['label' => "{$this->getLabelClass()}".implode(' ', $this->elementLabelClass), 'field' => '', 'form-group' => ''];
    }

    /**
     * @param array $labelClass
     * @param bool  $replace
     *
     * @return EncoreField
     */
    public function setLabelClass(array $labelClass, $replace = false): EncoreField
    {
        $this->labelClass = $replace ? $labelClass : array_merge($this->labelClass, $labelClass);

        return $this;
    }

    /**
     * Add the element label class.
     *
     * add By Richer 于2019年4月16日11:19:59 为标签增加自定义的样式
     *
     * @param $class
     *
     * @return $this
     */
    public function addElementLabelClass($class)
    {
        if (is_array($class) || is_string($class)) {
            $this->elementLabelClass = array_merge($this->elementLabelClass, (array) $class);

            $this->elementLabelClass = array_unique($this->elementLabelClass);
        }

        return $this;
    }
}