Php Silverstripe-根据选定的数据对象填充字段
当我从Php Silverstripe-根据选定的数据对象填充字段,php,jquery,silverstripe,Php,Jquery,Silverstripe,当我从下拉列表中选择成员姓名时,我想在屏幕上显示成员的详细信息 更多信息:我有一个表单可以提交几个字段。其中我有一个“选择用户”下拉列表,将此人链接到提交的数据 问题是-客户希望在选择用户时显示用户的详细信息(确保是正确的人等) 我怎样才能做到这一点?有3个独立的输入字段需要包含数据。我知道如何使用原始PHP/javascript实现,但不知道如何以Silverstripe的方式实现这一点基于此获得了一个解决方案: 我是这样做的: SS模板 $("table.myTable").on('chan
下拉列表中选择成员姓名时,我想在屏幕上显示成员的详细信息
更多信息:我有一个表单可以提交几个字段。其中我有一个“选择用户”下拉列表
,将此人链接到提交的数据
问题是-客户希望在选择用户时显示用户的详细信息(确保是正确的人等)
我怎样才能做到这一点?有3个独立的输入字段需要包含数据。我知道如何使用原始PHP/javascript实现,但不知道如何以Silverstripe
的方式实现这一点基于此获得了一个解决方案:
我是这样做的:
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);
}
当select更改时,获取数据对象并正确填充:)不必为此使用Ajax,在控制器上设置表单时,可以使用loadDataFrom()将成员直接加载到表单中
一个示例实现可以是(我还没有测试过,但应该可以):
这里应该有足够的信息来复制。。。(而不是另一个下拉列表,您只是填充了一个div或其他东西…)这是正确的,但只显示当前用户的数据,而不是基于下拉列表的任何用户的数据,或者其他数据对象的数据(假设我以后必须在某处重用它:))。但是谢谢你
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
);
}
}