Как создать форму редактирования в интерфейсе Silverstripe 4.2?

Нашел решение моей проблемы. Тем не менее, я не могу отлаживать dll win32, но при развертывании на сервере IIS он работает нормально. Решение: поместите Dll в одну из следующих папок:

C: \ Windows \ System32 \ inetsrv C: \ Windows \ SysWOW64 \ inetsrv

DLL win32 будет загружаться в Asp.Net Api.

Приветствия

0
задан SUTHERLANDesign 25 January 2019 в 10:56
поделиться

1 ответ

Думаю, я опубликую этот ответ, чтобы поделиться им, если у других возникнет та же проблема, что и у меня.

Наконец-то он заработал и решил проблему, заменив целые коды для методов ClassEditForm и doUpdateClassListing , а также создал другую функцию под названием Edit :

public function Edit(HTTPRequest $request) {
    $id = (int)$request->param('ID');
    $class = ClassListings::get()->byID($id);
    if (!$class || !$class->exists()) {
         return ErrorPage::response_for(404);
    }
    $form = $this->ClassEditForm($class);
    $return = $this->customise(array(
         'Title' => 'Edit: ' . $class->CourseTitle,
         'Form' => $form,
    ));

    return $return = $return->renderWith(array('ClassListingPage_edit', 'Page'));
}

public function ClassEditForm() {

        $id = (int)$this->urlParams['ID'];
        $class = ClassListings::get()->byID($id);

        $fields = new FieldList(
            HiddenField::create('ID')->setValue($id),
            TextField::create('CourseTitle', 'Course title:')
                ->setAttribute('placeholder', 'NZSL Level 1, NZSL 1A')
                ->setCustomValidationMessage('Please enter the course title field')
                ->addExtraClass('requiredField CourseTitle'),
            TextField::create('CourseLocation','Region:')
                ->setAttribute('placeholder', 'Enter region')
                ->setCustomValidationMessage('Please enter the region field')
                ->addExtraClass('requiredField')
          );
          $actions = new FieldList(
              FormAction::create('doUpdateClassListing')
                ->setTitle('Update your class listing')
                ->addExtraClass('btn btn-primary primary')
          );
          $validator = new RequiredFields([
              'CourseTitle',
              'CourseLocation'
          ]);

        $form = Form::create($this, 'ClassEditForm', $fields, $actions, $validator);

        if ($class) $form->loadDataFrom($class);

        return $form;
}

public function doUpdateClassListing($data, Form $form) {

           if($data['ID']){
               $id = $data['ID'];
               $class = ClassListings::get()->byID($id);
           } else {
               $class = ClassListings::create();
           }

           $form->saveInto($class);
           $id = $class->write();
           $form->sessionMessage('Your class listing has been updated!','good');

           $this->redirect($this->Link() . "edit/".$id);
       }
0
ответ дан SUTHERLANDesign 25 January 2019 в 10:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: