ContainsForms.php 1.8 KB
<?php
/**
 * +-----------------------------------------------------------------------------------------------------------------------
 * 重写 laravel-admin Widgets\ContainsForms 类
 * +-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Rewrite\Widgets
 * @package   App\Admin\Rewrite\Widgets
 * @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\Widgets;

/**
 * Trait ContainsForms
 *
 * @category  App\Admin\Rewrite\Widgets
 * @package   App\Admin\Rewrite\Widgets
 * @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/
 */
trait ContainsForms
{
    protected function buildTabbedForms($forms, $active = null)
    {
        $active = $active ?: request($this->activeName);

        if (!isset($forms[$active])) {
            $active = key($forms);
        }

        foreach ($forms as $name => $class) {
            if (!is_subclass_of($class, Form::class)) {
                admin_error("Class [{$class}] must be a sub-class of [App\Admin\Rewrite\Widgets\Form].");
                continue;
            }

            /** @var Form $form */
            $form = app()->make($class);

            if ($name == $active) {
                $this->add($form->title, $form->unbox(), true)->title($form->title);
            } else {
                $this->addLink($form->title, $this->getTabUrl($name));
            }
        }

        return $this;
    }
}