Основные файлы настроек хранятся в config/. Каждой группе настроек отведен свой файл либо папка.
После установки фреймворка, можно придумать имя своему будущему приложению. Это имя будет фигурировать в качестве корневого имени классов приложения. По умолчанию, ваше приложение находится в папке app, имеет имя App и автозагружается при помощи Composer, согласно стандарту PSR-4. Вы можете изменить его при помощи artisan-команды app:name.
Например, чтобы изменить имя приложения на Horsefly, выполните эту команду в корне установленного фреймворка:
php artisan app:name Horsefly
Laravel "из коробки" практически не требует дополнительного конфигурирования - вы можете сразу начать писать код.
Максимум, вам может быть нужно изменить настройки доступа к базе данных в config/database.php и, возможно, изменить параметры timezone и locale в config/app.php.
Далее, вам нужно определиться с названием среды выполнения, в которой будет работать ваше приложение на данной машине. Например, когда вы разрабатываете приложение, вам нужно видеть подробный текст возникающих ошибок. По умолчанию, фреймворк считает, что выполняется в среде production и в ней текст ошибки не выводится.
Поэтому вы определяете, что на данной машине у вас среда выполнения local и в файле .env ставите параметр debug в true.
Примечание: Никогда не ставьте app.debug в true в продакшне, т.е. на хостинге.
Права на запись
Папки внутри storage должны быть доступны веб-серверу для записи. Если вы устанавливаете фреймворк на Linux или MacOs - открыть папки на запись можно командой:
chmod -R 777 storage
Пути
Расположение некоторых папок, используемых фреймворком, можно изменить. Пути до таких папок задаются в bootstrap/paths.php.
Настройка среды выполнения
Часто необходимо иметь разные значения для разных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и производственном (продакшн) серверах. Это легко достигается использованием настроек, зависящих от среды.
Просто создайте новую папку внутри папки config, название которой совпадает с именем вашей среды, таким как local. Затем создайте файлы настроек, которые вы хотите переопределить и укажите в них значения для этой среды.
Например, вы можете переопределить драйвер кэша для локальной среды, создав файл cache.php внутри config/ с таким содержимым:
return [ 'driver' => 'file', ];
Заметьте, что вам не нужно указывать каждую настройку, которая есть в исходном конфигурационном файле, кроме настроек, которые вы хотите переопределить. Настройки среды будут наложены на эти базовые файлы. Теперь нам нужно сообщить Laravel, как определить, в какой среде он работает. Начальная среда всегда production.
Однако, вы можете настроить и другие среды в файле bootstrap/environment.php, который находится в корне установки Laravel. В этом файле вы найдёте вызов метода $app->detectEnvironment. Функция, которая ему передаётся, используется для определения текущей среды. В этой функции вы можете определять среду выполнения по имени машины, вызываемому домену или переменной окружения.
$env = $app->detectEnvironment(function() { return getenv('APP_ENV'); });
В этом примере название среды выполнения у нас находится в переменной окружения APP_ENV. Занести туда значения вы можете в файле .htaccess, правилах nginx или при помощи файла .env, который должен находиться в корне фреймворка.
Получение текущей среды
Вы можете получить текущую среду с помощью метода environment объекта Application:
$environment = $app->environment();
Передача аргументов в этот метод, чтобы проверить, совпадает ли среда с переданным значением:
if ($app->environment('local')) { // Среда - local } if ($app->environment('local', 'staging')) { // Среда - local ИЛИ staging }
Режим обслуживания
Когда ваше приложение находится в режиме обслуживания (maintenance mode), специальный шаблон будет отображаться вместо всех ваших маршрутов. Это позволяет "отключать" ваше приложение во время обновления или обслуживания. Проверка на режим обслуживания уже включена в стандартный фильтр App::before в файле app/Http/Filters/MaintenanceFilter.php. Ответ от этой проверки будет возвращен пользователю, когда приложение находится в режиме обслуживания.
Для включения этого режима просто выполните команду Artisan-а down:
php artsan down
Чтобы выйти из режима обслуживания выполните команду up:
php artsan up
Настройка сервис-провайдеров
При использовании среды, вы, возможно, захотите "добавить" дополнительные сервис-провайдеры к исходным в файле app. Однако, если вы это сделаете, вы заметите, что сервис-провайдеры среды переопределяют сервис-провайдеры в вашем исходном файле настроек app. Чтобы заставить сервис-провайдеры не переопределять, а добавляться к существующим, используйте вспомогательный метод append_config в вашем файле настроек среды app:
'providers' => append_config(array( 'LocalOnlyServiceProvider', ))
Язык
Язык по умолчанию устанавливается в файле app.php.
'locale' => 'en',
Язык можно изменить в любом файле проекта:
App::setLocale('ru');
Вы также можете установить резервный язык локализации в случае, если для основного языка нет вариантов перевода, будет браться строка из резервного файла локализации. Обычно это английский язык, но вы можете это поменять. Настройка находится в файле app/config/app.php:
'fallback_locale' => 'en',
Файлы переводов хранятся в папке, имя которой совпадает с названием локали, и которая должна находиться в resources/lang
. Например, для переводов на русский язык, создайте в папке resources/lang папку ru
, в ней - файл message.php
со следующим содержимым:
return [ 'welcome' => 'Добро пожаловать на сайт' ]
Теперь для получения строк из языкового файла можно воспользоваться фасадом Lang
.
echo Lang::get('messages.welcome');
При переключении на локаль en
, Laravel будет искать файл с тем же именем (message.php), но из папки en, поэтому файлы с одинаковым именем и одинаковыми элементами массива должны находиться в каждой языковой папке.
Языковые строки могут быть использованы при валидации данных из форм. Подробнее об этом в теме Request-запросы.
Laravel предоставляет простой интерфейс к популярной библиотеке SwiftMailer. Главный файл настроек - app/config/mail.php - содержит всевозможные параметры, позволяющие вам менять SMTP-сервер, порт, логин, пароль, а также устанавливать глобальный адрес from для исходящих сообщений. Вы можете использовать любой SMTP-сервер либо стандартную функцию PHPmail - для этого установите параметр driver в значение mail. Кроме того, доступен драйвер sendmail.
Mail::send('emails.welcome', $data, function($message) { $message->to('foo@example.com', 'Джон Смит')->subject('Привет!'); });