Я хочу показать сетку как автозаполнение в структуре yii. Я попытался с combogrid http://combogrid.justmybit.com/default.php, но не работает с загруженным файлом. Пожалуйста помоги.
Я создал расширение и расширил CJuiInputWidget. Таким образом, код
class ComboGridWidget extends CJuiInputWidget
{
public $source=array();
public $sourceUrl;
public function run()
{
list($name,$id)=$this->resolveNameID();
if(isset($this->htmlOptions['id']))
$id=$this->htmlOptions['id'];
else
$this->htmlOptions['id']=$id;
if(isset($this->htmlOptions['name']))
$name=$this->htmlOptions['name'];
if($this->hasModel())
echo CHtml::activeTextField($this->model,$this->attribute,$this->htmlOptions);
else
echo CHtml::textField($name,$this->value,$this->htmlOptions);
if($this->sourceUrl!==null)
$this->options['source']=CHtml::normalizeUrl($this->sourceUrl);
else
$this->options['source']=$this->source;
$options=CJavaScript::encode($this->options);
$this->registerScripts();
Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$id,"jQuery('#{$id}').combogrid($options);");
}
protected function registerScripts()
{
$asseturl=Yii::app()->getAssetManager()->publish(Yii::getPathofAlias('ext.combogrid.assets'));
$cs = Yii::app()->clientScript;
//$cs->registerScriptFile($asseturl.'/resources/jquery/jquery-1.9.1.min.js');
$cs->registerScriptFile($asseturl.'/resources/jquery/jquery-ui-1.10.1.custom.min.js');
$cs->registerScriptFile($asseturl.'/resources/plugin/jquery.ui.combogrid-1.6.3.js');
$cs->registerCssFile($asseturl.'/resources/css/smoothness/jquery-ui-1.10.1.custom.css');
$cs->registerCssFile($asseturl.'/resources/css/smoothness/jquery.ui.combogrid.css');
}
}
В файле просмотра, который я использую
$this->widget('ext.combogrid.CombogridWidget',array(
'name'=>'city1',
'options'=>array(
'minLength'=>'1',
'url'=> 'server.php',
'debug'=>true,
'colModel'=> "[{'columnName':'id','width':'10','label':'id'}, {'columnName':'name','width':'60','label':'title'},{'columnName':'author','width':'30','label':'author'}]",
'select'=> "function( event, ui ) {
$( '#city1' ).val( ui.item.name );
return false;
}"
),
));
Я прокомментировал регистрацию jquery-1.9.1.min.js, потому что Yii уже загружает файл jquery, и в этом случае я получаю список неопределенных значений. Если я использую этот файл jquery-1.9.1.min.js, то я не получаю никакого вывода. Он показывает только загрузочное изображение. Я поместил файл server.php в каталог приложения yii, где находится сценарий ввода yii. Также я хочу знать, как я могу поместить server.php в каталог расширения и использовать его в jquery?
Как заметил @Naveen, мы не можем помочь вам без лишних подробностей.
В качестве альтернативы вы можете использовать расширение select2 и использовать метод formatResults
для форматирования данных, полученных в виде строк.
Дальнейшее чтение: