diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index a7a617e..9eadec0 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-versions: [ '7.4', '8.0', '8.1' ] + php-versions: [ '8.1' ] dependency-version: [ prefer-lowest, prefer-stable ] steps: - uses: actions/checkout@master @@ -55,7 +55,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-versions: [ '7.4', '8.0', '8.1' ] + php-versions: [ '8.1' ] dependency-version: [ prefer-lowest, prefer-stable ] steps: - uses: actions/checkout@master @@ -88,7 +88,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-versions: [ '7.4', '8.0', '8.1' ] + php-versions: [ '8.1' ] dependency-version: [ prefer-lowest, prefer-stable ] steps: - uses: actions/checkout@master diff --git a/.php-version b/.php-version new file mode 100644 index 0000000..b8eb026 --- /dev/null +++ b/.php-version @@ -0,0 +1 @@ +8.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index d7012ed..4024d62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed + +- Handled even more errors in form preview + ## [1.1.1] ### Fixed diff --git a/src/Controller/WebformController.php b/src/Controller/WebformController.php index 98bc53f..a6c1662 100644 --- a/src/Controller/WebformController.php +++ b/src/Controller/WebformController.php @@ -7,6 +7,7 @@ use Drupal\Core\Http\RequestStack; use Drupal\Core\Link; use Drupal\Core\Render\Markup; +use Drupal\Core\Render\RendererInterface; use Drupal\Core\Routing\TrustedRedirectResponse; use Drupal\Core\Serialization\Yaml; use Drupal\Core\Url; @@ -24,34 +25,15 @@ final class WebformController extends ControllerBase { private const FILTER_WEBFORMS_IMPORTED = 'imported'; private const FILTER_WEBFORMS_NOT_IMPORTED = 'not imported'; - /** - * The request stack. - * - * @var \Drupal\Core\Http\RequestStack - */ - private RequestStack $requestStack; - - /** - * The import helper. - * - * @var \Drupal\os2forms_sync\Helper\ImportHelper - */ - private ImportHelper $importHelper; - - /** - * The webform helper. - * - * @var \Drupal\os2forms_sync\Helper\WebformHelper - */ - private WebformHelper $webformHelper; - /** * Constructor. */ - public function __construct(RequestStack $requestStack, ImportHelper $importHelper, WebformHelper $webformHelper) { - $this->requestStack = $requestStack; - $this->importHelper = $importHelper; - $this->webformHelper = $webformHelper; + public function __construct( + readonly private RequestStack $requestStack, + readonly private ImportHelper $importHelper, + readonly private WebformHelper $webformHelper, + readonly private RendererInterface $renderer + ) { } /** @@ -61,7 +43,8 @@ public static function create(ContainerInterface $container): self { return new static( $container->get('request_stack'), $container->get(ImportHelper::class), - $container->get(WebformHelper::class) + $container->get(WebformHelper::class), + $container->get('renderer') ); } @@ -141,6 +124,9 @@ public function index(): array { $attributes = $webform->attributes; try { $form = $this->webformHelper->getSubmissionForm($attributes['elements']); + // Make sure that the form cannot be submitted (hopefully). + $form['#attributes']['onsubmit'] = 'return false'; + $renderedForm = $this->renderer->renderPlain($form); } catch (\Throwable $t) { $form = [ @@ -151,9 +137,8 @@ public function index(): array { ], ], ]; + $renderedForm = $this->renderer->renderPlain($form); } - // Make sure that the form cannot be submitted (hopefully). - $form['#attributes']['onsubmit'] = 'return false'; $sourceUrl = $webform->sourceUrl; $importedWebform = $importedWebforms[$sourceUrl] ?? NULL; @@ -178,7 +163,9 @@ public function index(): array { 'form_display' => [ '#type' => 'details', '#title' => $this->t('Form display'), - 'form' => $form, + 'form' => [ + '#markup' => $renderedForm, + ], ], 'elements' => [