Хотел добавить свой пункт меню в меню аккаунт пользователя
Код в 'stroyka.theme':
use Drupal\Core;
function stroyka_preprocess_menu(&$variables) {
if($variables['menu_name']=='account'){
$variables['items']['form.registration']=array(
'title' => "Регистрация",
'url' => Url::fromRoute('registration')
);
}
Выдает это:
The website encountered an unexpected error. Please try again later.
Error: Class 'Url' not found in stroyka_preprocess_menu() (line 94 of themes\stroyka\stroyka.theme).
Перерыл инет, решения не добился.
кеш чистил, даже сервер перезапускал.
$settings['class_loader_auto_detect'] = FALSE; - раскоментил.
Нужны еще идеи.
Комментарии
- use Drupal\Core;
+ use Drupal\Core\Url;
Если часто приходится работать с программным кодом Drupal, удобнее использовать IDE (редактор кода) - PHPStorm с соответствующими плагинами (phplint, Drupal support, Twig support,YAML и т.п.)
Данный редактор указывает на подобные "ошибки" ещё в процессе работы над кодом.
Плюс, предоставляет инструменты автоматизации некоторых задач, та же автоматическая вставка "импорта" (use) по горячей клавише.
+ на браинсах есть раздел по друпалу https://www.jetbrains.com/help/phpstorm/drupal-support.html люблю эту IDE
спасибо помогло.
хотя я несколько озадачен
классом находиться по адрес Drupal\Core\Url.php
тоесть когда прописываешь use нужно указывать и имя файла без расширения?
на drupal.org
Class
Url
Defines an object that holds information about a URL.
Namespace
Drupal\Core
думал так и надо указывать
Нет, указывать всегда надо namespace, потом слэш и имя класса.
Пригодится, друпал не причем https://www.php.net/manual/ru/language.namespaces.importing.php
спасибо