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
    );
  }
}