Skip to content

Run validators only for root object in xPDOObjectVehicle install#267

Merged
opengeek merged 1 commit intomodxcms:3.xfrom
Ibochkarev:fix/validator-running-multiple-times
Mar 8, 2026
Merged

Run validators only for root object in xPDOObjectVehicle install#267
opengeek merged 1 commit intomodxcms:3.xfrom
Ibochkarev:fix/validator-running-multiple-times

Conversation

@Ibochkarev
Copy link
Contributor

What does it do?

In xPDOObjectVehicle::_installObject(), validation is now run only when installing the root object ($parentObject === null). For related objects ($parentObject !== null), validation is skipped since validators are vehicle-level and already executed for the root.

Change: if ($parentObject !== null || $this->validate($transport, $object, $vOptions))

Why is it needed?

Vehicle validators were invoked for every _installObject() call—once for the root and once per related object (e.g. Plugin + 2 PluginEvents = 3 times). The same validator script ran repeatedly, causing duplicate messages and unnecessary work.

How to test

  1. Build a package with one vehicle and one PHP validator (e.g. Captcha package).
  2. Install or reinstall the package in Manager (Workspace → Packages).
  3. Expected: validator message appears once in the log/console.
  4. Verify that installation still blocks when the validator returns false.

Related issue(s)/PR(s)

Resolves modxcms/revolution#16223

Validators are vehicle-level and were incorrectly invoked for each
related object (1 + N times). Now validate() runs only when
$parentObject === null (root object installation).

Resolves modxcms/revolution#16223
@opengeek opengeek changed the title fix(transport): run validators only for root object in vehicle install Run validators only for root object in xPDOObjectVehicle install Mar 8, 2026
@opengeek opengeek added this to the 3.2.0 milestone Mar 8, 2026
@opengeek opengeek added the bug label Mar 8, 2026
@opengeek opengeek merged commit 2425a0a into modxcms:3.x Mar 8, 2026
27 checks passed
@Ibochkarev Ibochkarev deleted the fix/validator-running-multiple-times branch March 8, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Transport package validator running multiple times

2 participants