我们正在推出对内部 Drupal 安装配置文件的更新,并且经常使用的菜单路径之一正在更改。我们的大多数安装都在快捷方式中引用该菜单路径(通过核心中的“快捷方式”模块)。在更新挂钩中,我们希望能够查询这些快捷方式并更新它们。
感觉这应该很简单,但由于某种原因,我们发现很难通过它们的 url 查询快捷方式。我们可以按标题查询它们,但这似乎很脆弱(因为标题可能因安装而异,可能因本地化而异等)。
我们尝试了以下方法,但这会导致错误消息'link' not found
:
// This does NOT work.
$shortcuts_needing_update =
\Drupal::entityTypeManager()
->getStorage('shortcut')
->loadByProperties([
'link' => [
'internal:/admin/timeline-management',
],
]);
// This works, but is fragile.
$shortcuts_needing_update =
\Drupal::entityTypeManager()
->getStorage('shortcut')
->loadByProperties([
'title' => 'My shortcut',
]);
根据中的代码,\Drupal\shortcut\Entity\Shortcut::baseFieldDefinitions()
很\Drupal\shortcut\Controller\ShortcutSetController::addShortcutLinkInline()
明显 Shortcut 实体有一个名为的属性link
,可以像包含uri
键的数组一样设置它,但即使它是一个基本字段,似乎也无法通过该属性进行查询。