Skip to main content
Drupal code

Main navigation

  • Home
  • Snippets
User account menu
  • Log in

Breadcrumb

  1. Home

Disabling SourceEditingRedundantTagsConstraintValidator in Drupal 11

By admin , 23 March, 2026

Tags

  • CKEditor
  • Constraint

When working with CKEditor 5 Source Editing in Drupal 11, you might run into validation errors caused by the SourceEditingRedundantTagsConstraintValidator. This validator prevents saving HTML that Drupal considers redundant or not allowed.

In some cases, you may want to disable this validation entirely — for example, when you need more control over the markup or are handling validation elsewhere.

The cleanest way to do this is by overriding the validator service.

In your custom module, add the following to my_module.services.yml:

services:
 Drupal\ckeditor5\Plugin\Validation\Constraint\SourceEditingRedundantTagsConstraintValidator:
   class: Drupal\my_module\Validator\NullSourceEditingValidator

Create a custom validator that does nothing:

<?php

namespace Drupal\my_module\Validator;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

class NullSourceEditingValidator extends ConstraintValidator {
 public function validate($value, Constraint $constraint) {
   // Intentionally left blank.
   // This disables SourceEditingRedundantTagsConstraintValidator.
 }
}

After this override:

  • The constraint still exists, so nothing breaks structurally
  • The validator runs, but performs no checks
  • CKEditor 5 Source Editing will no longer block content due to redundant tags

Tags Cloud

dependency injection(21) form(19) views(15) drush(15) twig(13) field(12) preprocess(10) comment(7) render(7) node(7) translate(7) tabs(7) controller(6) phpstorm(6) file(6) phpunit(5) entity(5) config(5) entityTypeManager(5) routes(5) database(4) php(4) jquery(4) service(4) roles(4) commerce(3) image(3) date(3) entityQuery(3) cache(3) slick(3) block(3) custom entity(3) javascript(3) user(3) taxonomy(3) guzzle(3) redirect(3) url(3) docker(2) git(2) request(2) phpstan(2) event(2) template(2) module(2) schema(2) migration(2) libraries(2) access(2) drupal.org(2) tests(2) ajax(2) photoswipe(2) permissions(2) logger(2) vscode(2) suggestions(2) states(2) title(2) fieldset(2) mysql(2) Constraint(1) CKEditor(1) phpcs(1) hook(1) ci-cd(1) gitlab(1) docksal(1) revision(1) filter(1) attribute(1) service provider(1) csv(1) PHPDoc(1) table(1) eslint(1) array(1) deprecation(1) theme(1) errors(1) wsod(1) settings.php(1) watchdog(1) pager(1) widget(1) file.usage(1) queue(1) exif(1) imagemagick(1) media(1) uuid(1) renderer(1) exposed form(1) page manager(1) transliteration(1) random(1) development(1) mail(1) webform(1) register(1) textarea(1) label(1) input(1) batch(1) import(1) messenger(1)
RSS feed
Powered by Drupal