Как открыть GridField_FormAction на новой вкладке браузера или в модальном окне Silverstripe ModelAdmin? - PullRequest
0 голосов
/ 17 июня 2020

У нас есть проект Silverstripe 4.x, в котором пользовательские действия были добавлены в Gridfield s.

Вот пример:

public function getColumnContent($gridField, $record, $columnName)
{
    $field = GridField_FormAction::create(
        $gridField,
        'CustomAction'.$record->ID,
        'Update Record',
        "updaterecord",
        ['RecordID' => $record->ID]
    );
    $field->addExtraClass('btn btn-primary font-icon-edit-list');
    return $field->Field();
}

public function getActions($gridField)
{
    return ['updaterecord'];
}

public function handleAction(GridField $gridField, $actionName, $arguments, $data)
{
    if ($actionName !== 'updaterecord') {
        return;
    } else {
        $item = $gridField->getList()->byID($arguments['RecordID']);
        if(!$item && !$item->DataSourceID) return;

        $params = [
          'id' => $item->DataSourceID,
          'recordHash' => $item->Hash
        ];

        Controller::curr()->redirect('/datarecord?' . http_build_query($params));
    }
}

Кнопки перенаправляют на настраиваемые формы, которые мы создали, поскольку нам нужны функции, недоступные в ModelAdmin - например, https://github.com/silverstripe/silverstripe-multiform

Однако это перезаписывает URL-адрес /admin/ пользовательской формой /datarecord? - что не является большим пользователем опыта.

В идеале мы бы хотели, чтобы настраиваемая форма открывалась либо на другой вкладке браузера (например, target="form"), либо в модальном.

Каков наилучший подход для создания любого из них поведение?

...