Здравствуйте, в файле mymodule.install я через hook_update_N вставляю записи в таблицу, и там я получая ссылку для вставки:
<?php
function mymodule_update_8008() {
$rows = [
[
'title' => 'Страница',
'link' => \Drupal::url('mymodule.dc', ['item' => 'page'])
]
];
$db_connection = \Drupal::database();
if ($db_connection->schema()->tableExists('main_m')) {
$db_connection->truncate('main_m')->execute();
foreach ($rows as $row) {
$db_connection->insert('main_m')->fields($row)->execute();
}
}
}
?>
после через страницу /update.php я обновляю модуль и он добавляет эти записи, но ссылка вставляется такая - /update.php/dc/page, почему тут оказывается "/update.php" ?
Комментарии
А что в mymodule.routing.yml?
<?php
mymodule.dc:
path: '/dc/{item}'
defaults:
_title: 'Страница'
_controller: '\Drupal\mymodule\Controller\DCController::content'
requirements:
_permission: 'access content'
options:
no_cache: 'TRUE'
?>
Возможно, добавление пустого base_url решит проблему
<?php \Drupal::url('mymodule.dc', ['item' => 'page'], ['base_url' => '']) ?>
спасибо, получилось, а почему так? он разве не должен просто ссылку вернуть? почему к /update.php привязывается?
Может баг, а может так задумано. На самом деле path в маршруте это же еще не ссылка. К ней, например, может подставляться языковой префикс. Соответственно формируется базовый путь. А вот почему туда попадает имя исполняемого скрипта update.php и насколько это правильно - не знаю.
Понял, спасибо за пояснение