Skip to content
Snippets Groups Projects

Rebuild route in Search form base

2 unresolved threads
Files
3
@@ -5,6 +5,7 @@
use Drupal\Core\Entity\EntityForm;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\PluginFormInterface;
use Drupal\Core\Routing\RouteBuilderInterface;
use Drupal\search\SearchPageRepositoryInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -27,29 +28,26 @@ abstract class SearchPageFormBase extends EntityForm {
*/
protected $plugin;
/**
* The search page repository.
*
* @var \Drupal\search\SearchPageRepositoryInterface
*/
protected $searchPageRepository;
/**
* Constructs a new search form.
*
* @param \Drupal\search\SearchPageRepositoryInterface $search_page_repository
* @param \Drupal\search\SearchPageRepositoryInterface $searchPageRepository
* The search page repository.
* @param \Drupal\Core\Routing\RouteBuilderInterface $routerBuilder
* The router builder.
*/
public function __construct(SearchPageRepositoryInterface $search_page_repository) {
$this->searchPageRepository = $search_page_repository;
}
public function __construct(
protected SearchPageRepositoryInterface $searchPageRepository,
protected RouteBuilderInterface $routerBuilder,
) {}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('search.search_page_repository')
$container->get('search.search_page_repository'),
$container->get('router.builder')
);
}
@@ -162,7 +160,8 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
*/
public function save(array $form, FormStateInterface $form_state) {
$this->entity->save();
// Rebuild routes to ensure the new search page route is available immediately.
$this->routerBuilder->rebuildIfNeeded();
$form_state->setRedirectUrl($this->entity->toUrl('collection'));
}
Loading