Yii

Что такое Yii?

Примечание

Yii

Yii – это высокопроизводительный компонентный PHP фреймворк, предназначенный для быстрой разработки современных веб-приложений.

Примечание

Особенности Yii

Как и многие другие PHP фреймворки, для организации кода Yii использует архитектурный паттерн MVC (Model-View-Controller). Yii придерживается философии простого и элегантного кода, не пытаясь усложнять дизайн только ради следования каким-либо шаблонам проектирования. Yii является full-stack фреймворком и включает в себя проверенные и хорошо зарекомендовавшие себя возможности, такие как ActiveRecord для реляционных и NoSQL баз данных, поддержку REST API, многоуровневое кэширование и другие. Yii отлично расширяем. Вы можете настроить или заменить практически любую часть основного кода. Используя архитектуру расширений, легко делиться кодом или использовать код сообщества. Одна из главных целей Yii – производительность.

Примечание

Что такое MVC?

Model View Controller (Модель-Представление-Контроллер) — схема разделения данных приложения, и управляющей логики на три отдельных компонента:

  • модель

  • представление

  • контроллер

Эти компоненты представлены таким образом, что модификация каждого из них может осуществляться независимо

Примечание

Model

Логика манипулирования данными Взаимодействия с БД (SELECT, INSERT, UPDATE, DELETE) Предоставляет данные и реагирует на команды контроллера, изменяя свое состояние. В контексте обычного пониманя - это база данных.

Примечание

View

Представление - это шаблоны. Отвечает за отображение данных модели пользователю, реагируя на изменения модели Обычно содержит HTML & CSS Общается с контроллером Используются шаблонизаторы

Примечание

Controller

Получает данные Обрабатывает запросы Получает данные из модели Передает данные в представление

Примечание

Кроме MVC, Yii приложения также имеют следующие сущности:

  • входные скрипты;

  • приложения;

  • компоненты приложения;

  • модули;

  • фильтры;

  • виджеты.

mvc

Установка и настройка

Скачиваем архив с официального сайта https://www.yiiframework.com/download и распаковываем в папку /opt/lampp/htdocs Папке передаем права для редактирования

$ chmod -R 777 htdocs/
yii

Далее открываем папку через Visual Studio Code

vsCode

В браузере переходим по ссылке http://localhost/web/ на что выдает следующую ошибку (не забудьте запустить XAMPP)

ошибка

Это значит, что не указан cookieValidationKey в файле /opt/lampp/htdocs/config/web.php Также может возникать ошибка: The directory is not writable by the Web process: /opt/lampp/htdocs/web/assets В этом случае просто снимаем защиту с папки командой

$ chmod 777 lampp/htdocs/web/assets
уи_установлен

Далее проверяем подключение к бд, указав правильное имя базы

db

Настройка адресации: уберем необходимость вводить в путь сайта слово web. Для этого скопируем файл /opt/lampp/htdocs/web/.htaccess в папку /opt/lampp/htdocs и пропишем регулярное выражение

RewriteEngine on
RewriteRule ^(.+)?$ /web/$1
Настройка_адресации

Добавим строку „baseUrl“ => „“, и раскомментируем urlManager для правильной работы переходов по страницам

adress

Следующим этапом переходим в конфигурационные файлы и проводим настройу в них. ВАЖНО! Конфигурационные файлы находятся по адресу: /opt/lampp/htdocs/config

Вносим следующие изенения в файл web.php „language“ => „ru-RU“, - добавляем в первый блок кода после $config = [ „id“ => „basic“, - это позволит нам перевести валидацию на русский язык.

Работа с gii

Затем необходимо разкомментировать последнюю строчку блока кода содержащего информацию о gii „allowedIPs“ => [„*“],. чтобы перейти на страницу кола gii, нужно в браузер ввести следующую ссылку: https://localhost/web/index.php?r=gii

gii

Необходимо в http://localhost/phpmyadmin/index.php?lang=ru создать базу данных с таблицами

Примечание

Авторизация: таблица пользователей

Зададим первином ключу автоинкримент и будем требовать логин и пароль. Для безопасности зашифруем пароль через md5

bdShop users usersTable usersData

Далее переименуем существующий файл пользователей models/User.php и по ссылке http://localhost/gii/model создадим файл по нашей таблице. таблицу можно выбрать из списка

usersModel

В случае ошибки открываем доступ к папке

error

Редактируем код, проверяем, чтобы везде в проекте был не Username, а login

 <?php

namespace app\models;

use Yii;
use yii\web\IdentityInterface;

/**
 * This is the model class for table "users".
 *
 * @property int $id
 * @property string $login
 * @property string $password
 */
class User extends \yii\db\ActiveRecord implements IdentityInterface
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'users';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['login', 'password'], 'required'],
            [['login', 'password'], 'string', 'max' => 255],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'login' => 'Login',
            'password' => 'Password',
        ];
    }
    public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    public static function findIdentityByAccessToken($token, $type = null)
    {
        return null;
    }

    public function getId()
    {
        return $this->id;
    }

    public function getAuthKey()
    {
        return null;
    }

    public function validateAuthKey($authKey)
    {
        return false;
    }

    public function validatePassword($password)
    {
        return $this->password === md5($password);
    }

    public static function findBylogin($login)
    {
        return User::findOne(['login' => $login]);
    }
}

Для вывода данных из таблицы необхлжимо помимо модели создать контроллер.

orders ordersData ordersModel ordersController ordersView