|
|
<?php
/* * The MIT License * * Copyright 2019 Blobt. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */
namespace blobt\widgets;
use yii\widgets\InputWidget; use Yii; use yii\base\InvalidConfigException; use yii\helpers\ArrayHelper; use yii\helpers\Html; use blobt\web\IcheckAsset;
/** * Description of Icheck * * @author Blobt * @email 380255922@qq.com * @created Sep 12, 2019 */ class Icheck extends InputWidget {
/** * @var var checkbox的选项 */ public $items = [];
/** * @inheritdoc * @throws \ReflectionException * @throws \yii\base\InvalidConfigException */ public function run() { $this->registerAsset(); $this->registerJs(); return $this->renderCheckBox(); }
/** * 初始化 */ public function init() { parent::init(); if ($this->hasModel() && !isset($options['name'])) { $this->name = $this->options['name'] = Html::getInputName($this->model, $this->attribute); } if (count($this->items) > 1) { $this->name .="[]"; } }
/** * 注册js和css */ protected function registerAsset() { $view = $this->getView(); IcheckAsset::register($view); }
/** * 注册js */ protected function registerJs() { $js = <<<SCRIPT $("input[name='{$this->name}']").iCheck(); SCRIPT; $this->getView()->registerJs($js); }
protected function renderCheckBox() { $line = []; foreach ($this->items as $key => $val) { $line[] = Html::tag('input', $key, ["type" => "radio", "name" => $this->name]); } return implode("\n", $line); }
}
|