Разработка сайта на Yii: пошаговое руководство

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение в Yii и подготовка окружения

Yii — это мощный PHP-фреймворк, который позволяет создавать высокопроизводительные веб-приложения. Он предоставляет множество инструментов и библиотек, упрощающих разработку и ускоряющих процесс создания сайтов. В этой статье мы рассмотрим, как создать сайт на Yii с нуля. Yii отличается гибкостью и возможностью масштабирования, что делает его отличным выбором как для небольших проектов, так и для крупных корпоративных приложений.

Кинга Идем в IT: пошаговый план для смены профессии

Подготовка окружения

Перед началом работы необходимо подготовить окружение для разработки. Для этого потребуется:

  • Установленный PHP версии 7.4 или выше. Это важно, так как более старые версии PHP могут не поддерживать все функции Yii.
  • Веб-сервер (например, Apache или Nginx). Выбор веб-сервера зависит от ваших предпочтений и требований проекта. Apache проще в настройке, а Nginx обеспечивает лучшую производительность.
  • Composer — менеджер зависимостей для PHP. Composer позволяет легко управлять библиотеками и пакетами, необходимыми для вашего проекта.
  • База данных (MySQL, PostgreSQL или другая). Выбор базы данных зависит от ваших предпочтений и требований проекта. MySQL широко используется и хорошо поддерживается Yii, но вы можете выбрать любую другую базу данных, совместимую с Yii.

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

Установка Yii через Composer

Для установки Yii используем Composer. Откройте терминал и выполните следующую команду:

Bash
Скопировать код
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

Эта команда создаст новый проект в директории basic. После завершения установки перейдите в эту директорию:

Bash
Скопировать код
cd basic

Настройка конфигурации

Откройте файл config/web.php и настройте параметры подключения к базе данных:

php
Скопировать код
'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=your_db_name',
        'username' => 'your_db_username',
        'password' => 'your_db_password',
        'charset' => 'utf8',
    ],
    // другие компоненты
],

Замените your_db_name, your_db_username и your_db_password на соответствующие значения. Это позволит вашему приложению подключаться к базе данных и выполнять запросы.

Создание базового шаблона проекта

Структура проекта

После установки Yii, структура проекта будет выглядеть следующим образом:

basic/
├── assets/
├── commands/
├── config/
├── controllers/
├── models/
├── runtime/
├── views/
├── web/
├── widgets/
├── composer.json
├── index.php
└── yii

Каждая директория имеет свою роль. Например, директория controllers содержит контроллеры, которые управляют логикой приложения, а директория views содержит представления, которые отображают данные пользователю.

Настройка маршрутизации

Маршрутизация в Yii настраивается в файле config/web.php. Например, чтобы создать маршрут для страницы "О нас", добавьте следующий код:

php
Скопировать код
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'about' => 'site/about',
    ],
],

Этот код позволяет вам создавать "красивые" URL-адреса и управлять маршрутизацией в вашем приложении. Вы можете добавлять новые маршруты и настраивать их в соответствии с вашими потребностями.

Работа с базой данных и моделями

Создание модели

Для работы с базой данных создадим модель. Например, для таблицы post создадим модель Post. В терминале выполните команду:

Bash
Скопировать код
./yii gii/model --tableName=post --modelClass=Post

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

Настройка модели

Откройте файл models/Post.php и добавьте правила валидации:

php
Скопировать код
public function rules()
{
    return [
        [['title', 'content'], 'required'],
        [['content'], 'string'],
        [['title'], 'string', 'max' => 255],
    ];
}

Правила валидации позволяют вам определить, какие данные могут быть сохранены в базе данных. Например, вы можете указать, что поле title должно быть строкой длиной не более 255 символов, а поле content должно быть обязательным.

Создание контроллеров и представлений

Создание контроллера

Контроллеры управляют логикой приложения. Создадим контроллер PostController. В директории controllers создайте файл PostController.php:

php
Скопировать код
namespace app\controllers;

use yii\web\Controller;
use app\models\Post;

class PostController extends Controller
{
    public function actionIndex()
    {
        $posts = Post::find()->all();
        return $this->render('index', ['posts' => $posts]);
    }
}

Этот контроллер содержит метод actionIndex, который извлекает все записи из таблицы post и передает их в представление.

Создание представлений

Представления отображают данные пользователю. Создадим представление для отображения списка постов. В директории views/post создайте файл index.php:

php
Скопировать код
<?php
/* @var $this yii\web\View */
/* @var $posts app\models\Post[] */

use yii\helpers\Html;

$this->title = 'Posts';
?>

<h1><?= Html::encode($this->title) ?></h1>

<ul>
    <?php foreach ($posts as $post): ?>
        <li><?= Html::encode($post->title) ?></li>
    <?php endforeach; ?>
</ul>

Этот код создает HTML-страницу, которая отображает список постов. Каждый пост выводится в виде элемента списка <li>.

Теперь, если вы перейдете по адресу http://your-domain/post, вы увидите список постов из базы данных. Это базовый пример, который можно расширять и настраивать в соответствии с вашими потребностями.

Дополнительные возможности Yii

Работа с формами

Yii предоставляет удобные инструменты для работы с формами. Например, вы можете создать форму для добавления новых постов. В контроллере добавьте метод actionCreate:

php
Скопировать код
public function actionCreate()
{
    $model = new Post();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['index']);
    }

    return $this->render('create', ['model' => $model]);
}

Создайте представление create.php в директории views/post:

php
Скопировать код
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $model app\models\Post */

$this->title = 'Create Post';
?>

<h1><?= Html::encode($this->title) ?></h1>

<div class="post-form">

    <?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'content')->textarea(['rows' => 6]) ?>

    <div class="form-group">
        <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

Этот код создает форму для добавления новых постов. Когда пользователь заполняет форму и отправляет данные, они сохраняются в базе данных.

Работа с виджетами

Yii также предоставляет множество виджетов, которые упрощают создание интерфейсов. Например, вы можете использовать виджет GridView для отображения таблицы данных. В контроллере добавьте метод actionAdmin:

php
Скопировать код
public function actionAdmin()
{
    $dataProvider = new ActiveDataProvider([
        'query' => Post::find(),
    ]);

    return $this->render('admin', ['dataProvider' => $dataProvider]);
}

Создайте представление admin.php в директории views/post:

php
Скопировать код
<?php
use yii\grid\GridView;
use yii\helpers\Html;

/* @var $this yii\web\View */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Manage Posts';
?>

<h1><?= Html::encode($this->title) ?></h1>

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'id',
        'title',
        'content:ntext',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

Этот код создает таблицу с данными из таблицы post. Виджет GridView автоматически генерирует HTML-код для отображения данных и предоставляет удобные инструменты для сортировки и фильтрации.

Заключение

В этом руководстве мы рассмотрели основные шаги по созданию сайта на Yii: от установки и настройки до работы с базой данных и создания контроллеров и представлений. Мы также рассмотрели дополнительные возможности Yii, такие как работа с формами и виджетами. Yii предоставляет множество возможностей для разработки, и это руководство — лишь начало вашего пути в мир Yii. Продолжайте изучать документацию и экспериментировать с различными функциями фреймворка, чтобы создавать мощные и гибкие веб-приложения. 🚀

Читайте также