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'),

читати далі...