Урок 1. Знакомство с XAMPP и Yii2: установка, введение в контроллеры и представления


Давайте попробуем поближе познакомиться с популярным фреймворком Yii2. Самый, пожалуй, простой способ (для меня лично) – это либо через композер установить на каком-то удалённом рабочем сервере, либо же развернуть на своем компьютере в виртуальной машине (с ОС Ubuntu, к примеру). Однако, если уж мы решили исследовать новую технологию, то давайте будем делать это на новом месте – заодно познакомимся и с XAMPP.

XAMPP качаем с официального сайт и ставим куда-нибудь в корень какого-нибудь диска (как предписывает инструкция, чтобы не было проблем с ограничениями путей Windows). После установки и запуска у меня XAMPP выдал предупреждение, что MySQL не будет работать, так как порт 3306 занят (у меня уже стоит какая-то версия мускуля, необходима для других проектов) – так что пришлось прописать в конфигах 3307 и создать другую службу:

sc create mysqlweb binPath= "d:\xampp\mysql\bin\mysqld.exe --defaults-file = D:\xampp\mysql\bin\my.ini mysqlweb"
Но база нам пока и не нужна. Запускаем просто апач, переходим по адресу локалхост в браузере и видм, что XAMPP запустился – прекрасно. Теперь все удаляем из папки htdocs и заливаем туда скачанный архив Yii2 базовый. Меняем cookieValidationKey из файла D:\xampp\htdocs\config\ web.php и пробуем открыть по адресу http://localhost/web/



Отлично. Мы успешно установили фреймворк Yii2. Давайте начнем работать с ним, чтобы посмотреть, что мы можем сделать.

Дополнительная настройка

В нашем config/web.php давайте включим prettyUrl. Прокрутите вниз, пока не увидите пример кода ниже, и раскомментируйте его

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
    ],
Приложение Hello World

Давайте создадим наше первое приложение hello world. На самом деле controllers/SiteController.php файл позволяет добавить код ниже

public function actionHello(){
    echo "Hello World";
}
Результат на странице http://localhost/web/site/hello



В yii префикс action в функции контроллера становится маршрутом. Поэтому, если нам понадобится actionHelloWorld(), наш маршрут будет таким http://localhost/web/site/helloworld. Имейте это в виду.

Вот и все, мы создали наше первое приложение hello world.

Каталоги приложения

Список каталогов yii показан ниже. В веб-папке есть загрузчик index.php файл, в котором вам нужно указать свою конфигурацию.

  • yii/ базовый путь приложения
  • composer.json, используемый Composer, описывает информацию о пакете
  • config/ содержит приложение и другие конфигурации
    • console.php конфигурация консольного приложения
    • web.php команды конфигурации веб-приложения
  • commands/ - консольные классы команд
  • controllers/ содержит классы контроллеров
  • models/ содержит классы моделей
  • runtime/ содержит файлы, созданные Yii во время выполнения, такие как журналы и файлы кэша
  • vendor / содержит установленные пакеты Composer, включая сам фреймворк Yii
  • views/ содержит файлы представлений
  • web/ application Web root, содержит файлы, доступные через Интернет
    • assets/ файлы ресурсов (JavaScript и CSS) в Yii
    • index.php скрипт ввода (или начальной загрузки) для приложения Yii
Работа с контроллерами

Контроллеры в MVC-приложениях являются связующим звеном между нашими представлениями и нашими моделями данных.

Давайте посмотрим, что мы можем сделать с контроллерами в yii2.

Простая маршрутизация

В нашем SiteController.php давайте создадим еще один простой маршрут. Мы можем получить доступ к этому маршруту через site/help

public function actionHelp(){
    echo "Это страница помощи";
}
Если бы мы создали функцию в контроллере с именем Dashboard.php маршрут был бы таким dashboard/help.

Создание новой базы маршруту пути

Давайте создадим контроллер панели мониторинга. В каталоге контроллеров появился новый файл с именем DashboardController.php и внутри него добавьте следующий код

<?php

namespace app\controllers;
use yii\web\Controller;

class DashboardController extends Controller
{

}
Теперь мы можем добавить наш маршрут help к контроллеру.

class DashboardController extends Controller
{

    public function actionHelp(){
        echo "Это страница помощи 2";
    }
}
Давайте проверим маршрут по адресу http://localhost/web/dashboard/help



Передача параметров в адрес

В нашем справочном маршруте в SiteController мы хотим получить и идентификатор из строки запроса, чтобы могли кое-что сделать:

public function actionHelp( $id="" ){
    if($id){
        echo "this is a help page with id ". $id;
    }else{
        echo "this is a help page";
    }
}
Перенаправление страницы

Давайте посмотрим, как мы можем перенаправить с одного маршрута на другой. В нашем Справочном маршруте SiteController мы пойдем по справочному маршруту DashboardController.

public function actionHelp(){
    $this->redirect('/web/dashboard/help');
}
Вот и наша страница должна быть перенаправлена.

Отображение представления (вьюшки)

Давайте посмотрим, как мы можем визуализировать файл представления. В нашем каталоге views/site мы создадим простое представление под названием faq.php.

Давайте создадим faq.php файл. Мы можем хранить здесь любые часто задаваемые вопросы.

В нашем /views/site/faq.php файл добавим код ниже.

<?php

echo "<h1>My Faq Page</h1>";

?>

<p>Hello this is the FAQ page</p>
Теперь в нашем SiteController нам нужно создать новый маршрут. Давайте назовем его faq.

// Create the faq route
public function actionFaq(){

}
Чтобы получить наш faq.php файл для рендеринга, нам нужно вызвать рендеринг с помощью функции route.

public function actionFaq(){
    return $this->render('faq');
}
Теперь мы можем видеть результат.



Передача данных в представления

Мы можем передавать данные от нашего контроллера к нашим представлениям. Мы обычно передаем наши модели данных таким образом.

Давайте создадим список вопросов.

public function actionFaq(){
    $questions = [
        'How hard is yii2',
        'What will you need to start development',
        'Is PHP easy to learn'
    ];
    return $this->render('faq');
}
Теперь мы можем передать $questions и получить доступ к нему в нашем faq.php вид. Мы делаем следующее.

public function actionFaq(){
    $questions = [
        'How hard is yii2',
        'What will you need to start development',
        'Is PHP easy to learn'
    ];
    return $this->render('faq',['questions'=>$questions]); // отправляем данные
}
Функция render принимает массив в качестве второго аргумента. Данные в этом массиве передаются в наше представление. В нашем faq.php файл мы можем обновить макет:

<?php
echo "<h1>My Faq Page</h1>";
?>
<p>Hello this is the FAQ page</p>
<p>The list of questions is below</p>
<ul>
<?Php foreach($questions as $question):?>
    <li><?php echo $question;?></li>
<?php endforeach; ?>
</ul>
Результат:



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, yii2, php, фреймворки, уроки по yii2




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Таёжный детектив, или браконьеры против властей на Дальнем Востоке
Мои программы
Выбранные элементы и идентификатор объекта в CorelDraw