我正在使用select2让用户从ajax列表中选择内容。 添加到db它工作得很好,但我想编辑东西。所以我仍然可以从我的select2中选择东西,但是用户应该看看select2的当前值是什么。
我尝试使用InitSelect做一些事情,但即使我刚刚从php传递了数据,它也无法正常工作。
这是我的Select2:
$(".personid").select2({
ajax: {
type: "post",
url: '/' + APP_PATH + '/Projects/find_person.json',
datatype: 'json',
quietMillis: '100',
data: function (term, page) {
return {
q: term.toUpperCase(), // wprowadzony ciag znakow - zawsze na uppercase
page_limit: 10,
};
},
results: function (data, page) {
var dane = {results: []};
$.each(data['data'], function (i, item) {
dane.results.push({
id: item['Person']['id'],
text: item['Person']['displayName']
});
});
return dane;
}
}
});
这是我的蛋糕形式输入:
echo $this->Form->input('person_id', array(
'type' => 'text',
'value' => $projectcontact['Person']['id'],
'Placeholder' => 'Wybierz osobę',
'empty' => 'Wybierz osobę ',
'class' => 'form-control personid',
'label' => array(
'class' => 'col-md-4 control-label',
'text' => 'Osoba'
)
));
任何人都可以帮忙让Select.js在数据库中显示当前的Persona名称数据吗?
答案 0 :(得分:1)
使用Select2 4.x,您不应再使用文本input
元素,而应使用select
元素。从文档引用:
将Select2与远程数据一起使用时,
select
所需的HTML与任何其他Select2相同。如果您需要提供默认选择,则只需为每个包含应显示的值和文本的选项添加option
。<select class="js-data-example-ajax"> <option value="3620194" selected="selected">select2/select2</option> </select>
<强> https://select2.github.io/examples.html#data-ajax 强>
因此,如上所述,使用单个选定的select
元素创建正确的option
输入,其内容如下:
echo $this->Form->input('person_id', array(
'type' => 'select',
'options' => array(
$projectcontact['Person']['id'] => $projectcontact['Person']['displayName']
),
'selected' => $projectcontact['Person']['id'],
'class' => 'form-control personid',
'label' => array(
'class' => 'col-md-4 control-label',
'text' => 'Osoba'
)
));
此外,您必须确保根据可能提交的$projectcontact
值向该人填充person_id
,否则在提交后呈现表单时,所选值将不会保留。
通常在创建select
元素时,您将使用完整的选项列表,以便表单帮助程序可以根据提交的值自动选择适当的选项。如果没有这样的列表,您将不得不阅读并提供特定的人员。
这是一些演示原则的虚拟代码:
$personId = $defaultPersonId;
if($this->request->is(array('post', 'put'))) {
$personId = $this->request->data('ModelName.person_id');
// ...
}
$projectcontact = $this->Person->findById($personId);
$this->set('projectcontact', $projectcontact);
另见