36 lines
1.8 KiB
PHP
36 lines
1.8 KiB
PHP
<?
|
||
/**
|
||
* Copyright (c) BestWebService.ru
|
||
* Author: Gvozdikov Victor Antonovich
|
||
* Редактирование кода запрещено. В случае распространения кода обязательно должен сохраняться этот copyright.
|
||
* Код распространяется как есть и не даёт гаранитий 100% стабильности. Автор не несёт ответственности за выполнения кода. Все права на код принадлежат Гвоздикову Виктор Антоновичу.
|
||
*/
|
||
|
||
namespace ui\input;
|
||
|
||
class Select_Ajax extends Input {
|
||
public function render(array $opt = array()): string{
|
||
$vals = [];
|
||
$sels = is_array($c = $this->options[Input::VALUE]) ? $c : [$c];
|
||
foreach ($this->options[Input::OPTIONS] as $k=>$v){
|
||
if(is_array($v)){
|
||
$name = $v['name'];
|
||
} else {
|
||
$name = $v;
|
||
}
|
||
$selected = in_array($k,$sels);
|
||
$vals[] = '<option value="'.$k.'" '.($selected?'selected':'').'>'.$name.'</option>';
|
||
}
|
||
|
||
if(file_exists($file = dirname(__FILE__).'/views/'.$this->theme.'.php')) {
|
||
ob_start();include($file);return ob_get_clean();
|
||
} else {
|
||
return '<div class="form-group" data-input="select_ajax" data-name="' . $this->name . '" ' . $this->getDataInit() . '>
|
||
' . (($c = $this->label) ? '<label>' . $this->label . '</label>' : '') . '
|
||
<select class="select-ajax"
|
||
data-data="' . h(je($this->options[Input::DATA])) . '"
|
||
data-controller="' . $this->options[Input::CONTROLLER] . '" name="' . $this->name . '" data-placeholder="' . $this->options[Input::PLACEHOLDER] . '">' . implode($vals) . '</select>
|
||
</div>';
|
||
}
|
||
}
|
||
} |