MenuPositionLink::getTitle() crashes when there is not current link
>>> [!note] Migrated issue <!-- Drupal.org comment --> <!-- Migrated from issue #3180912. --> Reported by: [prudloff](https://www.drupal.org/user/3611858) >>> <h3 id="summary-problem-motivation">Problem/Motivation</h3> <p>We are using simple_sitemap to generate a sitemap with Drush. However, this fails when the menu contains virtual links generated by menu_position:</p> <pre>&gt; TypeError: Argument 2 passed to Drupal\Core\Controller\TitleResolver::getTitle() must be an instance of Symfony\Component\Routing\Route, null given, called in /var/www/web/modules/contrib/menu_position/src/Plugin/Menu/MenuPositionLink.php on line 157 in /var/www/web/core/lib/Drupal/Core/Controller/TitleResolver.php on line 50 #0 /var/www/web/modules/contrib/menu_position/src/Plugin/Menu/MenuPositionLink.php(157): Drupal\Core\Controller\TitleResolver-&gt;getTitle(Object(Symfony\Component\HttpFoundation\Request), NULL)<br>&gt; #1 /var/www/web/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php(238): Drupal\menu_position\Plugin\Menu\MenuPositionLink-&gt;getTitle()<br>&gt; #2 /var/www/web/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php(231): Drupal\Core\Menu\DefaultMenuLinkTreeManipulators-&gt;generateIndexAndSort(Array)<br>&gt; #3 [internal function]: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators-&gt;generateIndexAndSort(Array)<br>&gt; #4 /var/www/web/core/lib/Drupal/Core/Menu/MenuLinkTree.php(148): call_user_func(Array, Array)<br>&gt; #5 /var/www/web/modules/contrib/simple_sitemap/src/Plugin/simple_sitemap/UrlGenerator/EntityMenuLinkContentUrlGenerator.php(106): Drupal\Core\Menu\MenuLinkTree-&gt;transform(Array, Array)<br>&gt; #6 /var/www/web/modules/contrib/simple_sitemap/src/Queue/QueueWorker.php(148): Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator\EntityMenuLinkContentUrlGenerator-&gt;getDataSets()<br>&gt; #7 /var/www/web/modules/contrib/simple_sitemap/src/Queue/QueueWorker.php(187): Drupal\simple_sitemap\Queue\QueueWorker-&gt;queue(NULL)<br>&gt; #8 /var/www/web/modules/contrib/simple_sitemap/src/Queue/QueueWorker.php(219): Drupal\simple_sitemap\Queue\QueueWorker-&gt;rebuildQueue()<br>&gt; #9 /var/www/web/modules/contrib/simple_sitemap/src/Queue/BatchTrait.php(65): Drupal\simple_sitemap\Queue\QueueWorker-&gt;generateSitemap()<br>&gt; #10 [internal function]: Drupal\simple_sitemap\Queue\QueueWorker::doBatchGenerateSitemap(Object(DrushBatchContext))<br>&gt; #11 /var/www/vendor/drush/drush/includes/batch.inc(254): call_user_func_array('Drupal\\simple_s...', Array)<br>&gt; #12 /var/www/vendor/drush/drush/includes/batch.inc(199): _drush_batch_worker()<br>&gt; #13 /var/www/vendor/drush/drush/includes/batch.inc(100): _drush_batch_command('77')<br>&gt; #14 /var/www/vendor/drush/drush/src/Drupal/Commands/core/BatchCommands.php(22): drush_batch_command('77')<br>&gt; #15 [internal function]: Drush\Drupal\Commands\core\BatchCommands-&gt;process('77', Array)<br>&gt; #16 /var/www/vendor/consolidation/annotated-command/src/CommandProcessor.php(257): call_user_func_array(Array, Array)<br>&gt; #17 /var/www/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor-&gt;runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))<br>&gt; #18 /var/www/vendor/consolidation/annotated-command/src/CommandProcessor.php(178): Consolidation\AnnotatedCommand\CommandProcessor-&gt;validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))<br>&gt; #19 /var/www/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(302): Consolidation\AnnotatedCommand\CommandProcessor-&gt;process(Object(Symfony\Component\Console\Output\ConsoleOutput), Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))<br>&gt; #20 /var/www/vendor/symfony/console/Command/Command.php(255): Consolidation\AnnotatedCommand\AnnotatedCommand-&gt;execute(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>&gt; #21 /var/www/vendor/symfony/console/Application.php(1005): Symfony\Component\Console\Command\Command-&gt;run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>&gt; #22 /var/www/vendor/symfony/console/Application.php(255): Symfony\Component\Console\Application-&gt;doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>&gt; #23 /var/www/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application-&gt;doRun(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>&gt; #24 /var/www/vendor/drush/drush/src/Runtime/Runtime.php(118): Symfony\Component\Console\Application-&gt;run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>&gt; #25 /var/www/vendor/drush/drush/src/Runtime/Runtime.php(49): Drush\Runtime\Runtime-&gt;doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))<br>&gt; #26 /var/www/vendor/drush/drush/drush.php(72): Drush\Runtime\Runtime-&gt;run(Array)<br>&gt; #27 /var/www/vendor/drush/drush/includes/preflight.inc(18): require('/var/www/vendor...')<br>&gt; #28 phar:///usr/local/bin/drush/bin/drush.php(141): drush_main()<br>&gt; #29 /usr/local/bin/drush(10): require('phar:///usr/loc...')<br>&gt; #30 {main}</pre><h4 id="summary-steps-reproduce">Steps to reproduce</h4> <ol> <li>Install menu_position 1.0.0-beta1 and simple_sitemap 3.5.0</li> <li>Add a menu position rule to the main menu</li> <li>Run <code>drush simple-sitemap:generate</code></li> </ol> <h3 id="summary-proposed-resolution">Proposed resolution</h3> <p>Don't try to call <code>TitleResolver::getTitle()</code> when there is no current route.</p> <h3 id="summary-remaining-tasks">Remaining tasks</h3> <p>I will submit a patch.</p> > Related issue: [Issue #3277980](https://www.drupal.org/node/3277980)
issue