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>> 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->getTitle(Object(Symfony\Component\HttpFoundation\Request), NULL)<br>> #1 /var/www/web/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php(238): Drupal\menu_position\Plugin\Menu\MenuPositionLink->getTitle()<br>> #2 /var/www/web/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php(231): Drupal\Core\Menu\DefaultMenuLinkTreeManipulators->generateIndexAndSort(Array)<br>> #3 [internal function]: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators->generateIndexAndSort(Array)<br>> #4 /var/www/web/core/lib/Drupal/Core/Menu/MenuLinkTree.php(148): call_user_func(Array, Array)<br>> #5 /var/www/web/modules/contrib/simple_sitemap/src/Plugin/simple_sitemap/UrlGenerator/EntityMenuLinkContentUrlGenerator.php(106): Drupal\Core\Menu\MenuLinkTree->transform(Array, Array)<br>> #6 /var/www/web/modules/contrib/simple_sitemap/src/Queue/QueueWorker.php(148): Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator\EntityMenuLinkContentUrlGenerator->getDataSets()<br>> #7 /var/www/web/modules/contrib/simple_sitemap/src/Queue/QueueWorker.php(187): Drupal\simple_sitemap\Queue\QueueWorker->queue(NULL)<br>> #8 /var/www/web/modules/contrib/simple_sitemap/src/Queue/QueueWorker.php(219): Drupal\simple_sitemap\Queue\QueueWorker->rebuildQueue()<br>> #9 /var/www/web/modules/contrib/simple_sitemap/src/Queue/BatchTrait.php(65): Drupal\simple_sitemap\Queue\QueueWorker->generateSitemap()<br>> #10 [internal function]: Drupal\simple_sitemap\Queue\QueueWorker::doBatchGenerateSitemap(Object(DrushBatchContext))<br>> #11 /var/www/vendor/drush/drush/includes/batch.inc(254): call_user_func_array('Drupal\\simple_s...', Array)<br>> #12 /var/www/vendor/drush/drush/includes/batch.inc(199): _drush_batch_worker()<br>> #13 /var/www/vendor/drush/drush/includes/batch.inc(100): _drush_batch_command('77')<br>> #14 /var/www/vendor/drush/drush/src/Drupal/Commands/core/BatchCommands.php(22): drush_batch_command('77')<br>> #15 [internal function]: Drush\Drupal\Commands\core\BatchCommands->process('77', Array)<br>> #16 /var/www/vendor/consolidation/annotated-command/src/CommandProcessor.php(257): call_user_func_array(Array, Array)<br>> #17 /var/www/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))<br>> #18 /var/www/vendor/consolidation/annotated-command/src/CommandProcessor.php(178): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))<br>> #19 /var/www/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(302): Consolidation\AnnotatedCommand\CommandProcessor->process(Object(Symfony\Component\Console\Output\ConsoleOutput), Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))<br>> #20 /var/www/vendor/symfony/console/Command/Command.php(255): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>> #21 /var/www/vendor/symfony/console/Application.php(1005): Symfony\Component\Console\Command\Command->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>> #22 /var/www/vendor/symfony/console/Application.php(255): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>> #23 /var/www/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>> #24 /var/www/vendor/drush/drush/src/Runtime/Runtime.php(118): Symfony\Component\Console\Application->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))<br>> #25 /var/www/vendor/drush/drush/src/Runtime/Runtime.php(49): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))<br>> #26 /var/www/vendor/drush/drush/drush.php(72): Drush\Runtime\Runtime->run(Array)<br>> #27 /var/www/vendor/drush/drush/includes/preflight.inc(18): require('/var/www/vendor...')<br>> #28 phar:///usr/local/bin/drush/bin/drush.php(141): drush_main()<br>> #29 /usr/local/bin/drush(10): require('phar:///usr/loc...')<br>> #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