HttpStatusCodeDisplayVariant.php in Page Manager 8
File
src/Plugin/DisplayVariant/HttpStatusCodeDisplayVariant.php
View source
<?php
namespace Drupal\page_manager\Plugin\DisplayVariant;
use Drupal\Core\Display\VariantBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
class HttpStatusCodeDisplayVariant extends VariantBase {
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$options = Response::$statusTexts;
$options = [
'404' => $options['404'],
'403' => $options['403'],
'500' => $options['500'],
] + $options;
array_walk($options, function ($title, $code) use (&$options) {
$options[$code] = $this
->t('@code (@title)', [
'@code' => $code,
'@title' => $title,
]);
});
$form['status_code'] = [
'#title' => $this
->t('HTTP status code'),
'#type' => 'select',
'#default_value' => $this->configuration['status_code'],
'#options' => $options,
];
return $form;
}
public function defaultConfiguration() {
$configuration = parent::defaultConfiguration();
$configuration['status_code'] = '404';
return $configuration;
}
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
parent::submitConfigurationForm($form, $form_state);
$this->configuration['status_code'] = $form_state
->getValue('status_code');
}
public function build() {
$status_code = $this->configuration['status_code'];
if ($status_code == 200) {
return [];
}
else {
throw new HttpException($status_code);
}
}
}