|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* @link http://www.yiiframework.com/
|
|
|
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
|
|
* @license http://www.yiiframework.com/license/
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace yii\gii\components;
|
|
|
|
|
|
|
|
use yii\gii\Generator;
|
|
|
|
use yii\helpers\Json;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
|
|
* @since 2.0
|
|
|
|
*/
|
|
|
|
class ActiveField extends \yii\widgets\ActiveField
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @var Generator
|
|
|
|
*/
|
|
|
|
public $model;
|
|
|
|
|
|
|
|
public function init()
|
|
|
|
{
|
|
|
|
$stickyAttributes = $this->model->stickyAttributes();
|
|
|
|
if (in_array($this->attribute, $stickyAttributes)) {
|
|
|
|
$this->sticky();
|
|
|
|
}
|
|
|
|
$hints = $this->model->hints();
|
|
|
|
if (isset($hints[$this->attribute])) {
|
|
|
|
$this->hint($hints[$this->attribute]);
|
|
|
|
}
|
|
|
|
$autoCompleteData = $this->model->autoCompleteData();
|
|
|
|
if (isset($autoCompleteData[$this->attribute])) {
|
|
|
|
if (is_callable($autoCompleteData[$this->attribute])) {
|
|
|
|
$this->autoComplete(call_user_func($autoCompleteData[$this->attribute]));
|
|
|
|
} else {
|
|
|
|
$this->autoComplete($autoCompleteData[$this->attribute]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes field remember its value between page reloads
|
|
|
|
* @return static the field object itself
|
|
|
|
*/
|
|
|
|
public function sticky()
|
|
|
|
{
|
|
|
|
$this->options['class'] .= ' sticky';
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes field auto completable
|
|
|
|
* @param array $data auto complete data (array of callables or scalars)
|
|
|
|
* @return static the field object itself
|
|
|
|
*/
|
|
|
|
public function autoComplete($data)
|
|
|
|
{
|
|
|
|
static $counter = 0;
|
|
|
|
$this->inputOptions['class'] .= ' typeahead-' . (++$counter);
|
|
|
|
$this->form->getView()->registerJs("jQuery('.typeahead-{$counter}').typeahead({local: " . Json::encode($data) . "});");
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
}
|