Как одновременно перейти на новую страницу и скачать файл yii2?

Чтобы одновременно перейти на новую страницу и скачать файл в Yii2, вам нужно создать действие контроллера, которое будет обрабатывать запросы для скачивания файла. Затем, вы можете использовать метод yiiwebResponse::sendFile() для отправки файла клиенту.

Давайте разобьем этот процесс на несколько шагов:

Шаг 1: Создание действия контроллера
Сначала вам нужно создать действие в нужном вам контроллере, которое будет обрабатывать запросы для скачивания файла. Допустим, вы хотите скачать файл "file.pdf". Пример кода может выглядеть следующим образом:

public function actionDownloadFile()
{
    $filePath = 'путь_к_файлу/file.pdf';
    return Yii::$app->response->sendFile($filePath);
}

Шаг 2: Настройка маршрута
Затем вам нужно настроить маршрут для этого действия в файле конфигурации приложения (например, config/web.php). Пример кода может выглядеть следующим образом:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'site/download-file' => 'site/download-file',
        // другие правила маршрутизации
    ],
],

Шаг 3: Создание ссылки и переход на новую страницу
Теперь вы можете создать ссылку на странице, которая будет выполнять два действия: переходить на новую страницу и скачивать файл. Для этого вы можете использовать HTML-тег <a> с указанием URL-адреса действия контроллера. Пример кода может выглядеть следующим образом:

<a href="<?= Yii::$app->urlManager->createUrl(['site/download-file']) ?>" target="_blank" download>Скачать файл</a>

Здесь мы используем метод createUrl() для создания URL-адреса для действия контроллера, указывая его в качестве первого параметра. Мы также добавляем атрибут target="_blank", чтобы открыть ссылку в новой вкладке, и атрибут download, чтобы сразу скачать файл.

После выполнения всех этих шагов, вы сможете одновременно перейти на новую страницу и скачать файл при щелчке на ссылке "Скачать файл".