В таблицу вставляется неправильная ссылка

Главные вкладки

Аватар пользователя Artalek Artalek 13 января 2021 в 16:30

Здравствуйте, в файле 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" ?

Лучший ответ

Аватар пользователя charOFF charOFF 13 января 2021 в 18:38
1

Возможно, добавление пустого base_url решит проблему

<?php

\Drupal::url('mymodule.dc', ['item' => 'page'], ['base_url' => ''])

?>

Комментарии

Аватар пользователя Artalek Artalek 13 января 2021 в 18:14
<?php
mymodule
.dc:
    
path'/dc/{item}'
    
defaults:
        
_title'Страница'
        
_controller'\Drupal\mymodule\Controller\DCController::content'
    
requirements:
        
_permission'access content'
    
options:
        
no_cache'TRUE'
?>
Аватар пользователя Artalek Artalek 13 января 2021 в 18:59

спасибо, получилось, а почему так? он разве не должен просто ссылку вернуть? почему к /update.php привязывается?

Аватар пользователя charOFF charOFF 13 января 2021 в 20:51

Может баг, а может так задумано. На самом деле path в маршруте это же еще не ссылка. К ней, например, может подставляться языковой префикс. Соответственно формируется базовый путь. А вот почему туда попадает имя исполняемого скрипта update.php и насколько это правильно - не знаю.