【发布时间】:2018-03-13 17:29:40
【问题描述】:
致命错误:在 null 上调用成员函数 Services()
总是null
不知道怎么解决
是的,这已经解决了问题!
类 MemberProfileViewer 扩展 Page_Controller { // ... 公共函数 currentPageID() { $id = 0; $request = $this->getRequest(); if(is_numeric($request->requestVar('ID'))) { $id = $request->requestVar('ID'); } elseif (is_numeric($request->param('ID'))) { $id = $request->param('ID'); } $id = (int)$id; 返回$id; } 公共函数Servizi(){ $源=空; if ($id = $this->currentPageID()) { 会话::set('ID', $id); return $source = Member::get()->byID($id)->Services()->map('Title','Title')->toArray(); } elseif (is_null($source)) { return $source = Member::get()->byID(Session::get('ID'))->Services()->map('Title','Title')->toArray(); } } 公共函数形式(){ $fields = 新的字段列表( CheckboxSetField::create( $name = "服务", $title = "选择", $source = $this->Servizi() ), ) $actions = 字段列表::创建( FormAction::create('form', 'Send') ->setUseButtonTag(真) ->addExtraClass('btn btn-primary') ); $validator = new RequiredFields('Service'); $form = new Form($this, 'form', $fields, $actions, $validator); $form->setFormMethod('POST', true); $data = Session::get("FormData.{$form->getName()}.data"); 返回 $ 数据? $form->loadDataFrom($data) : $form; } 公共函数 doform($data, $form) { Session::set("FormData.{$form->getName()}.data", $data); $submission = new RequestForm(); $form->saveInto($submission); $提交->写(); $form->sessionMessage( "谢谢,我们的顾问会尽快联系您。", 'good' ); Session::clear("FormData.{$form->getName()}.data"); 返回 $this->redirectBack(); } }【问题讨论】:
-
$this->urlParams['ID']的值是多少?在尝试使用它之前,您应该添加一些错误处理以防找不到该成员 -
你需要更加防御性地编写代码,你不能总是期望得到一个 Member 实例。如果没有具有该 ID 的成员怎么办?如果 urlParams 数组上没有设置“ID”怎么办?
标签: php forms silverstripe member