Yii2

Как в Yii2 отключить Bootstrap
Как в Yii2 отключить Bootstrap

По умолчанию, Yii2 поставляется совместно с Bootstrap фреймворком. И после установки какой либо из конфигураций (basic или advanced), вы увидите стартовую страницу стилизованную с помощью Bootstrap. В данном случае (и возможно во всех последующих), ничего плохого в этом нет, ведь это всего лишь заглушка, а не сайт на продакшине. Но а что если заказчик, или студия решила отойти от столь популярного решения в виде Bootstrap, а выбрала к примеру materializecss? Да, в этом случае нам понадобится отключить Bootstrap, и подключить materializecss фреймворк (или любой другой который придет вам по вкусу).

И первое что нам придется сделать, это отказаться от готовых решений bootstrap, предоставляемых разработчиками yii.

Второе, в файле ресурсов (в basic, это фай - /assets/AppAsset.php), отключить поддержку Bootstrap:

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
    ];
    public $depends = [
        'yiiwebYiiAsset',
        'yiibootstrapBootstrapAsset',
    ];
}

удалив строку:

'yiibootstrapBootstrapAsset',

читать полностью...

Как установить подключение к БД в фреймворке Yii2
Как установить подключение к БД в фреймворке Yii2

Простая и тривиальная задача с которой может столкнуться начинающий Yii2 разработчик. Начнем с того, что в зависимости от конфигурации проекта, БД может настраиваться по разному. Возьмем два варианта, которые предоставляет нам см фреймворк:

  1. basic (простой вариант)
  2. advanced (продвинутый вариант)

В обоих из вариантов, настройка БД (указание префикса/tablePrefix, имя/username, пароля/password, dsn и прочего) выполняется одинаково. Все зависит от месторасположения файла и «коннектор» класса работы с БД. В нашем примере мы будем рассматривать вариант взаимодействия с базой данных MySQL, как с одной из самых популярных.

Если брать basic, то конфигурационный файл подключения, можно найти по адресу - «/config/db.php».

С advanced вариантом, немного посложнее (на то он и продвинутый, т. е. для крупных проектов). Здесь может быть более одного файла настроек БД (для разделов — backend, frontend, пр.). Все зависит от того, как изначально вы сконфигурировали свое приложение. Так как админка и пользовательская часть зачастую взаимодействуют с одной базой, то файл настроек я обычно помещаю в каталог - «/common/config/db.php». А в конфиге «/common/config/main.php», прописываю доступ к выше упомянутому. Таким образом и в backend, и в frontend, подключение к БД автоматически «подтянется».

читать полностью...

Кэширование в Yii2 и поведения (behavior)
Кэширование в Yii2 и поведения (behavior)

Что делать, если Вам потребовалось внедрить стандартный функционал (к примеру кэширование данных) к некоторым стандартным моделям? Мне в данном случае, на помощь пришел behavior и его великолепные возможности.

Если вкратце, то behavior (поведение), в фреймворке yii2, позволяет расширять контроллеры и модели (или все то что было наследовано от класса «Component») своими дополнительными методами. Работает по аналогии с трейтами в PHP, но не то же самое. Если вас интересует более детальное определение и возможности, для этого загляните на официальный сайт фреймворка.

В данной же статье, я опишу свой небольшой опыт совместной работы кэширования, моделей и поведений.

История. На определенном этапе разработки, потребовалось внедрить кэширование к четырем стандартным моделям:

  • Рубрикам
  • Категориям
  • Регионам
  • Городам

читать полностью...

Как получить SQL запрос текстом в Yii2
Как получить SQL запрос текстом в Yii2

Казалось бы, простая и тривиальная задача. Но пришлось немного покопаться в коде и доках.
И так, что бы получить "чистый" SQL запрос который в последствии будет передан в БД на выполнение, достаточно использовать следующий код:

echo $Query -> select('*')
-> from('{{%authitem}}') -> createCommand() -> getRawSql();
Как подключиться к нескольким БД в Yii2
Как подключиться к нескольким БД в Yii2

Для того чтобы подключиться к нескольким БД в фреймворке Yii2 нужно:
1. Создать две настройки БД в конфигурационном файле сайта. У меня подключения вынесены в отдельные файлы, и имеют следующий вид (пример).
Подключение к первой базе данных:

return  [
	'class' => 'yiidbConnection',
	'dsn' => 'mysql:host=127.0.0.1;dbname=work_db1',
	'username' => 'root',
	'password' => '',
	'charset' => 'utf8',
	'tablePrefix' => 'tbl_',
];

Подключение к второй базе данных:

return  [
	'class' => 'yiidbConnection',
	'dsn' => 'mysql:host=127.0.0.1;dbname=work_db2',
	'username' => 'root',
	'password' => '',
	'charset' => 'utf8',
	'tablePrefix' => 'tbl_',
];

2. В базовом конфиге прописываем:

'db' => require(__DIR__ . '/db.php'),
'db2' => require(__DIR__ . '/db2.php'),

читать полностью...