Problem/Motivation
The most recent release, 8.x-4.0-beta6, introduced an issue that triggers a PHP fatal error with the output:
Symfony\Component\Routing\Exception\MissingMandatoryParametersException: Some mandatory parameters are missing ("view_mode") to generate a URL for route "flag.action_link_flag". in Drupal\Core\Routing\UrlGenerator->doGenerate() (line 187 of /app/web/core/lib/Drupal/Core/Routing/UrlGenerator.php).
Steps to reproduce
This was observed on a site running on Drupal 10.4.1 and PHP 8.3. More research is needed to see what other factors could contribute to this error (i.e., site configuration or custom code that no longer works?).
Proposed resolution
TBD
Remaining tasks
User interface changes
API changes
Data model changes
| Comment | File | Size | Author |
|---|---|---|---|
| #7 | flag-add-view-mode-param.patch | 769 bytes | robin_rosh |
Issue fork flag-3501854
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
mark_fullmerComment #3
mark_fullmerThis was an announced API change, per https://www.drupal.org/node/3458551 , in prior releases. Closing as "Works as designed."
Comment #4
neclimdulI'm not sure announcing it in a changelog is enough.
First, its deprecated, not changed and 4.0 isn't out. So the expectation would be that deprecated code would continue to function issuing the warning to users.
`Not providing the "$view_mode" parameter is deprecated in flag:8.x-4.0-beta4 and will throw an error from flag:8.x-4.0. See https://www.drupal.org/node/3458551.`
Since it didn't, I just got a fatal error never having seen a deprecation. No chance to fix if I missed the changelog.
Second, the default code for generating links doesn't require a view mode and defaults to null.
I haven't tested it yet but this would seem to trigger a fatal error when using the function as documented.
Comment #5
caesius commentedOn one hand, it's a beta module so backward-incompatible changes can be expected.
On the other hand, is it really "works as expected" if it breaks other contrib modules? See #3507901: Compatibility with Flag 8.x-4.0-beta6
Comment #6
robin_rosh commentedI'm facing the same issue even after upgrading from 9.5 to 10.5, specifically with flag 5.0, also the flag functionality not working wherever i'm using. Could any one provide the solution in my case?
Comment #7
robin_rosh commentedFixes missing
view_modeparameter in flag.action_link_flag and flag.action_link_unflag routes.Prevents
InvalidParameterExceptionand PHP deprecation warnings after upgrading to Flag 5.x.Patch tested and resolves issue #3501854.
Comment #8
ivnishFolks, how to reproduce this? Do you use contrib or custom modules?
Comment #9
jacobsaw commentedI can confirm this is an issue when using a contrib module like Bookmarks. This code https://git.drupalcode.org/project/bookmarks/-/blob/1.0.x/src/Plugin/Blo... triggers the error "User error: Symfony\Component\Routing\Exception\InvalidParameterException: Parameter "view_mode" for route "flag.action_link_flag" must match "[^/]++" ("" given) to generate a corresponding URL.".
I could submit a patch to add the view mode to that module, but in this use case I would just be passing "default" anyway.
Comment #10
ivnishComment #13
ivnishI changed the default viewmode to "default" to fix old contrib modules