Рейтинг:1

Как преобразовать параметры маршрута для entity_revision?

флаг pl

Моя пользовательская сущность может быть изменена. Я вижу исправления, но моя форма возврата изменений не работает. Маршрут для формы определен в msul_rovi_games.routing.yml.

entity.rovi_game.revision_revert_confirm:
  путь: '/rovi_game/{rovi_game}/revisions/{rovi_game_revision}/revert'
  значения по умолчанию:
    _title: 'Вернуться к предыдущей версии'
    _form: '\Drupal\msul_rovi_games\Form\RoviGameRevisionRevertForm'
  требования:
    _permission: «администрировать объекты rovi_game»
    rovi_game: \d+
  параметры:
    _node_operation_route: ИСТИНА
    рови_игра:
      тип: сущность: rovi_game
    rovi_game_revision:
      тип: entity_revision:rovi_game

Форма определяется в src/Форма/RoviGameRevisionRevertForm.php.

пространство имен Drupal\msul_rovi_games\Form;

используйте Drupal\Component\Datetime\TimeInterface;
используйте Drupal\Core\Datetime\DateFormatterInterface;
используйте Drupal\Core\Entity\EntityRepositoryInterface;
используйте Drupal\Core\Entity\Sql\SqlContentEntityStorage;
используйте Drupal\Core\Entity\EntityStorageInterface;
используйте Drupal\Core\Form\ConfirmFormBase;
используйте Drupal\Core\Form\FormStateInterface;
используйте Drupal\Core\Url;
используйте Drupal\msul_rovi_games\Entity\RoviGameInterface;
используйте Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Предоставляет форму для возврата версии rovi_game.
 *
 * @внутренний
 */
класс RoviGameRevisionRevertForm расширяет ConfirmFormBase {

  /**
   * {@inheritdoc}
   */
  общедоступная функция buildForm (массив $ form, FormStateInterface $ form_state, RoviGameInterface $ rovi_game_revision = NULL) {
    $this->revision = $rovi_game_revision;
    $form = parent::buildForm($form, $form_state);

    вернуть $ форму;
  }
}

Когда я пытаюсь вернуться, я получаю следующую ошибку.

TypeError: Аргумент 3, передаваемый в Drupal\msul_rovi_games\Form\RoviGameRevisionRevertForm::buildForm(), должен реализовывать интерфейс Drupal\msul_rovi_games\Entity\RoviGameInterface или быть нулевым, строка указана в Drupal\msul_rovi_games\Form\RoviGameRevisionRevertForm->buildForm() (строка 116 из /opt/drupal/web/modules/custom/msul_rovi_games/src/Form/RoviGameRevisionRevertForm.php)

Что мне не хватает?

Рейтинг:4
флаг in

Вам просто не хватает уровня «параметры» в массиве параметров. Видеть Обновление параметров имени слага маршрута. Обратите внимание, что параметры должны быть вложены в опции > параметры.

foobar.view:
  путь: '/foobar/{foobar_placeholder}'
  значения по умолчанию:
    _controller: '\Drupal\foobar\Controller\Foobar::content'
    _title: 'О да, фубар'
  параметры:
    параметры:
      foobar_placeholder:
        тип: сущность:foobar

Ваш код обновлен:

entity.rovi_game.revision_revert_confirm:
  путь: '/rovi_game/{rovi_game}/revisions/{rovi_game_revision}/revert'
  значения по умолчанию:
    _title: 'Вернуться к предыдущей версии'
    _form: '\Drupal\msul_rovi_games\Form\RoviGameRevisionRevertForm'
  требования:
    _permission: «администрировать объекты rovi_game»
    rovi_game: \d+
  параметры:
    _node_operation_route: ИСТИНА
    # Вложить параметры в «параметры»
    параметры:
      рови_игра:
        тип: сущность: rovi_game
      rovi_game_revision:
        тип: entity_revision:rovi_game

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.