Breaking errors in D11.2 or D11.x

Created on 14 May 2025, about 2 months ago

Problem/Motivation

When updating to D11.2.x or D11.x branch, the Field Validation module fails. This can also be seen when running Drupal CI with the Field Validation module as an dependency as we do in AI module.

This seems to be due to Drupal updating the symfony validator library: https://git.drupalcode.org/project/drupal/-/blob/11.x/composer/Metapacka...

There are property types and output types that has to be defined. As far as I can see they are backwards compatible as well.

Steps to reproduce

  • Add all needed types and return types.

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

🐛 Bug report
Status

Active

Version

3.0

Component

Code

Created by

🇩🇪Germany marcus_johansson

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @marcus_johansson
  • 🇬🇧United Kingdom scott_euser

    This looks good to me. I think given 3x is beta, release notes should just make it clear in case anyone is extending any constraints, that they should add the return types + types to their messages in order to remain compatible.

    E.g.

    class Class1 {
    	public string $message = 'Great message.';
    }
    
    class Class2 extends Class1 {
    	public $message = 'Great message.';
    }
    $class = new Class2();
    

    Will result in

    Fatal error: Type of Class2::$message must be string (as in class Class1)

    And

    class Class1 {
    	public function myFunction(): string {
    		return 'hello1';
    	}
    }
    
    class Class2 extends Class1 {
    	public function myFunction() {
    		return 'hello2';
    	}
    }
    $class = new Class2();
    print $class->myFunction();
    

    Will result in

    Fatal error: Declaration of Class2::myFunction() must be compatible with Class1::myFunction(): string

  • 🇮🇳India Vivek Panicker Kolkata

    Patch worked for me as well.
    Was able to run update hooks successfully.

  • Here's the log while upgrading to Drupal 11.2.0.rc2

      Unable to decode output into JSON: Syntax error                                              
                                                                                                   
      Fatal error: Declaration of Drupal\field_validation\Plugin\Validation\Constraint\JsonConstr  
      aint::validatedBy() must be compatible with Symfony\Component\Validator\Constraint::validat  
      edBy(): string in /var/www/html/d11site/web/modules/contrib/field_validation/src/Plugin/Valid  
      ation/Constraint/JsonConstraint.php on line 21  
    

    MR !15 solved the problem.
    +1 for RTBC

  • 🇺🇸United States jrockowitz Brooklyn, NY
  • 🇦🇺Australia digitalcatalyst

    tested this patch when upgrading, from core 11.1.7 to 11.2.0, updates were failing with

    PHP Fatal error: Declaration of Drupal\field_validation\Plugin\Validation\Constraint\TimeConstraint::validatedBy() must be compatible with Symfony\Component\Validator\Constraint::validatedBy(): string in /var/www/sites/drupal/multisite/web/modules/contrib/field_validation/src/Plugin/Validation/Constraint/TimeConstraint.php on line 21

    after patch updates all ran fine.

Production build 0.71.5 2024