当我从wagtailimages
members
个详细信息
更多信息:我有一个提交几个字段的表单。其中我有一个“选择用户”Dropdown
来将此人与正在提交的数据相关联
问题是 - 客户希望用户的详细信息在他们选择用户时显示(确保其合适的人等)
我怎样才能做到这一点?有3个单独的输入字段需要包含数据。我知道如何使用原始PHP / javascript,但不知道如何以Dropdown
方式实现它
答案 0 :(得分:1)
您不必使用Ajax,当您在控制器上设置表单时,可以使用loadDataFrom(http://api.silverstripe.org/3.3/class-Form.html#_loadDataFrom)将成员直接加载到表单中。
示例实现可能是(我没有测试过,但它应该可以工作):
class Page_Controller extends ContentController
{
public function index()
{
$member = Member::currentUser();
$this->customise(array(
"Form" => $this->Form()->loadDataFrom($member)
));
}
public function Form() {
return Form::create(
$this,
"Form",
$fields, // Add your own fields here
$actions // Add your own actions here
);
}
}
答案 1 :(得分:0)
基于此获得解决方案:https://www.silverstripe.org/community/forums/form-questions/show/24628
我这样做是这样的:
SS模板
$("table.myTable").on('change','select#Some_Form',function(){
$.ajax({
type: "POST",
data: {param:param},
url: window.location.href+"your_action_here",
success: function(result) {
var resArr = JSON.parse(result);
$('input#Some_Field').val(resArr['key']);
}
});
});
<强>控制器强>
static $allowed_actions = array('your_action_here');
//parameter is a SS_HTTPRequest
public function your_action_here($request){
//assuming my parameter is an ID
$ID = $request['param'];
$dataObject = DataObject::get_by_id('Object',$ID);
$JSONArray = array('key'=>$dataObject->Field);
echo json_encode($JSONArray);
}
当选择更改时,获取DataObject
并正确填充:)