Как сделать кнопку, по нажатию на которую произойдёт скачивание файла?

Для того чтобы сделать кнопку, по нажатию на которую произойдет скачивание файла в Yii, вам понадобится использовать некоторые функции и классы фреймворка.

1. Во-первых, вам нужно создать действие в контроллере, которое будет обрабатывать запрос на скачивание файла. Допустим, у вас есть контроллер SiteController, и вы хотите скачать файл file.txt:

public function actionDownload()
{
    $path = Yii::getAlias('@webroot') . '/path/to/your/file.txt'; // путь к вашему файлу

    if (file_exists($path)) {
        return Yii::$app->response->sendFile($path);
    } else {
        throw new yiiwebNotFoundHttpException('The requested file does not exist.');
    }
}

В данном примере мы используем метод sendFile() объекта response, чтобы отправить файл в ответ на запрос. Если файл не существует, мы вызываем исключение NotFoundHttpException.

2. Во-вторых, вам нужно создать соответствующий маршрут для вашего действия в файле конфигурации приложения config/web.php:

return [
    // ...
    'components' => [
        // ...
    ],
    'controllerMap' => [
        'site' => 'appcontrollersSiteController',
    ],
    'routes' => [
        'site/download' => 'site/download',
    ],
];

В данном примере мы добавляем маршрут site/download, который будет соответствовать нашему действию actionDownload в контроллере SiteController.

3. Теперь вы можете добавить кнопку в вашем представлении (шаблоне) для вызова данного действия:

<?= Html::a('Download File', ['/site/download'], ['class' => 'btn btn-primary']) ?>

В данном примере мы используем Html::a() для создания ссылки с текстом "Download File", адресом /site/download и классом btn btn-primary для стилизации кнопки.

После выполнения указанных шагов при нажатии на кнопку "Download File" произойдет скачивание файла file.txt.

Обратите внимание, что в приведенных примерах мы предполагаем, что у вас уже установлен и настроен фреймворк Yii. Если вы только начинаете работать с фреймворком Yii, вам может быть полезно обратиться к его документации для получения дополнительной информации о конфигурации, создании контроллеров и представлений.