DataObject
이없는 경우 작동 할 수있는 양식이있는 SilverStripe (3.4) 페이지가 있습니다.SS_HTTPRequest를 문자열로 변환 할 수 없습니다.
public function AntwortForm($ID) {
$Nummer = Vortest_Fragen::get()->byID($ID);
if ($Nummer) {
$Art=$Nummer->Art;
}
if ($Art == 'Normal') {
$fields = new FieldList(
TextAreaField::create('Antwort'),
HiddenField::create('ID', 'ID', $ID),
HiddenField::create('VortestID', 'VortestID', $this->request->param('ID')),
HiddenField::create('Aktion', 'Aktion', $this->request->param('Action'))
);
} else {
$Optionen = explode(';', $Nummer->Optionen);
$a = 'A';
for ($i = 0 ; $i < count ($Optionen); $i++) {
$Op[$a] ='<div style="width:25px;display:inline;">' . $a . ')</div> ' . $Optionen[$i];
$a++;
}
$fields = new FieldList(
CheckboxSetField::create('Antwort', 'Antwort', $Op),
HiddenField::create('ID', 'ID', $ID),
HiddenField::create('VortestID', 'VortestID', $this->request->param('ID')),
HiddenField::create('Aktion', 'Aktion',$this->request->param('Action')),
HiddenField::create('Art', 'Art', $Nummer->Art)
);
}
$actions = new FieldList(
FormAction::create('AntwortEintragen', 'Eintragen')
);
$form = new Form($this, 'AntwortForm', $fields, $actions);
return $form;
}
function AntwortEintragen($data, $form) {
$Antwort = Vortest_Antwort::get()->filter(array('FrageID' => $data['ID'], 'SchreiberID' => Member::currentUserID()));
foreach($Antwort as $item) {
$item->delete();
}
foreach ($data['Antwort'] as $Antwort) {
$Ant .= $Antwort . ',';
}
$Antwort = new Vortest_Antwort();
if ($data['Antwort']) {
$form->saveInto($Antwort);
if ($data['Art'] == 'Mechanics') {
$Antwort->Antwort = $Ant;
}
$Antwort->SchreiberID = Member::currentUserID();
$Antwort->FrageID = $data['ID'];
$Antwort->write();
}
$VID = $data['VortestID'];
if ($data['Aktion'] == 'AlleFragen') {
$this->redirect('/vortest/AlleFragen/' . $VID . '#' . $data['FrageNr']);
} elseif ($data['Aktion'] == 'Einzelfrage') {
$this->redirect('/vortest/Einzelfrage/' . $VID);
} else {
$this->redirect('/vortest/Test/' . $VID.'#' . $data['FrageNr']);
}
}
내가이 줄 $Nummer = Vortest_Fragen::get()->byID($ID);
에 숫자로 $ID
을 변경할 때 다음과 같은 오류 얻을 내가 그것을 변경하지 않으면 의미가 있습니다 : 어떻게이
[Recoverable Error] Object of class SS_HTTPRequest could not be converted to string
수정합니까 문제?
전자 들여 쓰기 코드, 쉽게 독일어 이외의 사람들이 코드를 읽고 흐름의 요지를 빨리 얻으려면 ID도 거기에서 모든 불필요한 코드를 제거하십시오. 어쨌든 오류는 아주 자명하다 : AntwortForm ($ ID) <$ ID로 명명 변수는 그 ID가 var dump ($ id)라면 아마 SS_HTTPRequest 유형이라는 것을 의미하지는 않는다. $ this-> request-> param ("ID")이 올바른 값을 가지고 있지 않습니까? –
비슷한 문제가 있습니다. 해결책은 다음과 같습니다. http://stackoverflow.com/a/37874804/4363418 –
가능한 [컨트롤러 확장자 내 양식 제출 - SilverStripe 3.4.0] (http://stackoverflow.com/questions/37874714/submit-form-within) -controller-extension-silverstripe-3-4-0) –