Как перенести проект Yii2 на хостинг

Добрый день! При переносе на хостинг возникла проблема, что при авторизации пользователя на сайте (после ввода логина и пароля) страница на загружается, хотя на локальном сервере все работало. 1) Рабочий вариант (работает на локальном ПК) Ввожу логин, пар

Настройка удалённой среды для нашего проекта

Обычное Yii приложение должно без особых проблем срабатывать на Apache или Nginx, Я перечислю инструкции для Apache, а для Nginx их можно найти тут.

Создание репозитория на GitHub

После того, как мы задали структура нашему приложению, можем создать репозиторий на Github:

Заметка: советуем скопировать файл .gitignore с GitHub в проект , а не создавать его с нуля.

Я буду использовать программу Mac OS X GitHub, вы же можете воспользоваться командной строкой. Ниже я перечислили все команды, которые нужно выполнить для добавления новой репы на GitHub (замените “youraccount” вашим GitHub логином):

cd ~/Sites/hello
git init
git commit -m "first commit of hello world for yii2"
git remote add origin [email protected]:youraccount/hello.git
git push -u origin master

Конфигурация Apache на вашем сервере

Если у вас до сих пор нет LAMP или облачного сервера, можете воспользоваться моими инструкциями. Теперь, когда у вас есть IP адрес, можете заняться настройкой DNS.

Теперь авторизируйтесь на своём сервере:

Обновите конфигурацию, установите Git, активируйте для Apache и mcrypt для PHP (Ubuntu):

sudo apt-get update
sudo apt-get upgrade
sudo a2enmod rewrite
php5enmod mcrypt

Конфигурация доступа к GitHub на удалённом сервере

Теперь нам нужно добавить настройки пользователя Github. Для начала установим git на сервере.

Добавляем www-data и пользователю GitHub особые права на каталог www.

adduser github
addgroup www
adduser github www
adduser www-data www
chown -R :www /var/www
chmod +s -R /var/www
chmod -vR g+w /var/www/

Затем создаём специальный ключ для пользователя через которого будет осуществляться синхронизация с GitHub:

su github
ssh-keygen -t rsa -C "[email protected]"
exit
cat /home/github/.ssh/id_rsa.pub

В результате вы должны скопировать ключ и вставить на GitHub.com:

Заходим на страницу настроек и вставляем ключ:

В результате вы должны увидеть:

Теперь можем скопировать код из репозитория на сервер:

Если конфигурация правильная, то вы должны увидеть следующую картину (если нет, воспользуйтесь инструкцией):

Теперь после отправки изменений кода с вашей локальной машины, они попадут в репозиторий, а затем для синхронизации кода на сервере необходимо выполнить команду , в результате чего проект будет обновлён.

Создание конфигурации для Apache

Создание файла конфигурации для Apache:

Конфигурация для вашего домена:

 ServerName yourdomain.com
# Set document root to be "basic/web"
DocumentRoot "/var/www/hello/web"

    # use mod_rewrite for pretty URL support
    RewriteEngine on
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php

Активация сайта:

a2ensite hello.conf
a2dissite 000-default.conf
service apache2 reload

Теперь перейдя по адресу http://yourdomain.com/site/say?target=World! вы должны увидеть следующее:

Поздравляем! Теперь мы можем приступить к более глубокому знакомству с Yii2.

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

Yii2 доступен для быстрой установки из репозитория. Мы уже немного познакомились с ним в соответствующей статье о Composer. Там хорошие видео-доклады. Ещё мы прикольно провели время на практикуме по Git и Composer. Так что тоже приобрести запись новичкам советую :)

Файловую структуру можно выбрать из стандартных шаблонов и . Первый сделан по типу Yii1 для простых конфигураций с одним доменом. Второй, напротив, устроен для полного разделения приложения на пользовательскую часть и модуль администрирования.

Эти шаблоны тоже доступны для установки из репозиториев. Перед установкой нам нужно зайти в терминал и проверить работу PHP в консольном режиме, выполнив:

php -v

Если вы используете Denwer в Windows и этот вызов не сработает, то нужно зайти в → → , найти системную переменную и через точку с запятой добавить туда ваш путь , после чего для применения параметров перезагрузить систему и запустить сервер.

Теперь нужно любым удобным способом загрузить файл . Это ни что иное, как комплект PHP-скриптов, распространяемый в виде PHAR-архива. Запустить его можно в консоли как любой скрипт.

Простое скачивание файла composer.phar в папку подойдёт, например, если вы работаете в консоли на хостинге. Это удобно, если хостинг предоставляет доступ по SSH как, например, этот.

А вообще, в Linux я предпочитаю устанавливать Composer прямо в папку :

php -r "readfile('https://getcomposer.org/installer');" | php -- --filename=composer --install-dir=/bin

Теперь зайдём в терминал и выполним:

php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic project

или в Linux с установленным в систему скриптом:

composer create-project --prefer-dist yiisoft/yii2-app-basic project

Здесь мы попросили менеджера зависимостей Composer сначала установить себе плагин для работы с менеджером Bower, а потом добавить папку и создать в ней новый проект по шаблону . Мы здесь не стали указывать флаг , так как не хотим скачивать нестабильные версии пакетов.

При этом сам шаблон будет развёрнут в корне, а все нужные зависимости скачаны в поддиректорию . На экране мы увидим весь этот процесс:

Installing yiisoft/yii2-app-basic (2.0.3)
  - Installing yiisoft/yii2-app-basic (2.0.3)
    Downloading: 100%

Created project in project
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing ezyang/htmlpurifier (v4.6.0)
    Downloading: 100%

  - Installing swiftmailer/swiftmailer (v5.3.1)
    Downloading: 100%

  - Installing yiisoft/yii2-debug (2.0.3)
    Downloading: 100%

    ...

  - Installing yiisoft/yii2-gii (2.0.3)
    Downloading: 100%

  - Installing fzaninotto/faker (v1.4.0)
    Downloading: 100%

  - Installing  yiisoft/yii2-faker (2.0.3)
    Downloading: 100%

Writing lock file
Generating autoload files
chmod('runtime', 0777)...done.
chmod('web/assets', 0777)...done.
chmod('yii', 0755)...done.

Проект мы создали. Теперь приступим к разработке приложения.

Развёртывание конфигурации

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

Можно сделать отдельную папку , в которую скопировать эти файлы для примера:

config
    ├── common.php
    ├── console.php
    ├── params.php
    └── web.php
...
examples
    ├── config
    │   ├── common-local.php
    │   ├── console-local.php
    │   ├── params-local.php
    │   └── web-local.php
    ├── web
    │   ├── index.php
    │   └── index-test.php
    └── yii

Эти заготовки мы уже в не вписываем. Теперь для разворачивания проекта программисту достаточно скопировать эти заготовки из наверх и заполнить их своими настройками.

Но эти файлы немного отличаются для и для режима. Чтобы ещё больше облегчить работу можно приложить к проекту две пачки файлов для разных окружений:

environments
├── dev
│   ├── config
│   │   ├── common-local.php
│   │   ├── console-local.php
│   │   ├── params-local.php
│   │   └── web-local.php
│   ├── web
│   │   ├── index.php
│   │   └── index-test.php
│   └── yii
└── prod
    ├── config
    │   ├── common-local.php
    │   ├── console-local.php
    │   ├── params-local.php
    │   └── web-local.php
    ├── web
    │   └── index.php
    └── yii

Заодно папку мы переименовали в .

Можно ли теперь как-то автоматизировать процедуру развёртывания локальной конфигурации? Например, написать консольный скрипт, который будет копировать файлы из нужной нам папки в проект.

На самом деле можно. Более того, такой скрипт уже есть. В yii2-app-advanced уже есть такая же папка с конфигурацией и файлы , в корне. Нам достаточно скопировать эти файлы:

environments
├── dev
│   └── ...
├── prod
│   └── ...
└── index.php
init
init.bat

и перенастроить на работу с yii2-app-basic`:

return 
    'Development' => 
        'path' => 'dev',
        'setWritable' => 
            'runtime',
            'web/assets',
        ,
        'setExecutable' => 
            'yii',
            'tests/codeception/bin/yii',
        ,
        'setCookieValidationKey' => 
            'config/web-local.php',
        ,
    ,
    'Production' => 
        'path' => 'prod',
        'setWritable' => 
            'runtime',
            'web/assets',
        ,
        'setExecutable' => 
            'yii',
        ,
        'setCookieValidationKey' => 
            'config/web-local.php',
        ,
    ,
;

Теперь в свежем проекте достаточно запустить

php init

и указать ему окружение . Он развернёт локальные файлы и заодно выставит нужные права доступа на папки и .

В стандартном yii2-app-basic расстанвкой прав занимается скрипт . После перехода на команду мы можем найти секцию со скриптами установки в :

"scripts": {
    "post-install-cmd": ,
    "post-create-project-cmd": 
},
"extra": {
    "yii\\composer\\Installer::postCreateProject": {
        "setPermission": [
            {
                "runtime": "0777",
                "web/assets": "0777",
                "yii": "0755"
            }
        ]
    },
    "yii\\composer\\Installer::postInstall": {
        "generateCookieValidationKey": [
            "config/web.php"
        ]
    }
},

и полностью её удалить.

На этом интегрирование гибкой системы конфигурации из app-advanced в app-basic завершено.

Можно отправить всё в свой репозиторий на GitHub:

Active Record

Salem Ouerdani, @tunecino добавил behavior для optimistic locking.

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

Сам механизм такой блокировки был реализован в первых версиях Yii, но использовать его правильно было не так просто. Теперь просто.

Документацию можно найти в
и API OptimisticLockBehavior.

Настройка веб сервера #

Приложение, установленное по инструкциям, приведённым выше, будет работать сразу как с Apache,
так и с Nginx под Windows и Linux с установленным PHP 5.4 и выше. Yii 2.0 также совместим с
HHVM. Тем не менее, в некоторых случаях поведение при работе с HHVM отличается от обычного PHP.
Будьте внимательны.

На рабочем сервере вам наверняка захочется изменить URL приложения с
на . Для этого необходимо изменить корневую директорию в настройках веб сервера так,
чтобы та указывала на . Дополнительно можно спрятать следуя описанию в разделе
«Разбор и генерация URL». Далее будет показано как настроить Apache и Nginx.

Рекомендуемые настройки Apache

Добавьте следующее в Apache или в конфигурационный файл виртуального хоста. Не забудьте заменить
на корректный путь к .

Рекомендуемые настройки Nginx

PHP должен быть установлен как FPM SAPI для Nginx.
Используйте следующие параметры Nginx и не забудьте заменить на корректный путь к и
на ваше имя хоста.

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

Учтите, что используя HTTPS необходимо задавать чтобы Yii мог корректно определять защищенное
соединение.

Установка при помощи Composer #

Установка Composer

Если Composer еще не установлен это можно сделать по инструкции на
getcomposer.org, или одним из нижеперечисленных способов. На Linux или Mac
используйте следующую команду:

На Windows, скачайте и запустите Composer-Setup.exe.

В случае возникновения проблем читайте
раздел “Troubleshooting” в документации Composer.
Если вы только начинаете использовать Composer, рекомендуем прочитать как минимум
раздел “Basic usage”.

В данном руководстве предполагается, что Composer установлен .
То есть он доступен через команду . Если вы используете из локальной директории,
изменяйте команды соответственно.

Если у вас уже установлен Composer, обновите его при помощи .

После установки Composer устанавливать Yii можно запустив следующую команду в папке доступной через веб:

Установка Yii

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

Установка Yii2

Установка basic приложения:

// По указанному пути (относительно домашней директории)
composer create-project --prefer-dist yiisoft/yii2-app-basic /path
// в директорию basic (если находимся директорией выше)
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
// в текущую директорию
composer create-project --prefer-dist yiisoft/yii2-app-basic .

Если вы хотите установить последнюю нестабильную ревизию Yii:

composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic 

Установка advanced приложения:

// По указанному пути (относительно домашней директории)
composer create-project --prefer-dist yiisoft/yii2-app-advanced /path
// в директорию basic (если находимся директорией выше)
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced
// в текущую директорию
composer create-project --prefer-dist yiisoft/yii2-app-advanced .

// Установить последнюю нестабильную ревизию Yii advanced:
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced

Выполнить:

php init

Фреймворк предложит развернуть приложение в одном из указанных окружений: окружение разработки и продакшен

Which environment do you want the application to be initialized in?

   Development
   Production

  Your choice 

В окружении разработки…

Your choice  0

  Initialize the application under 'Development' environment? 

Далее генерируются необходимые файлы:

Initialize the application under 'Development' environment?  yes

Start initialization ...

 generate backend/config/main-local.php
 generate backend/config/params-local.php
 generate backend/config/test-local.php
 generate backend/web/index-test.php
 generate backend/web/index.php
 generate backend/web/robots.txt
 generate common/config/main-local.php
 generate common/config/params-local.php
 generate common/config/test-local.php
 generate console/config/main-local.php
 generate console/config/params-local.php
 generate console/config/test-local.php
 generate frontend/config/main-local.php
 generate frontend/config/params-local.php
 generate frontend/config/test-local.php
 generate frontend/web/index-test.php
 generate frontend/web/index.php
 generate frontend/web/robots.txt
 generate yii
 generate yii_test
 generate yii_test.bat
 generate cookie validation key in backend/config/main-local.php
 generate cookie validation key in frontend/config/main-local.php
    chmod 0777 backend/runtime
    chmod 0777 backend/web/assets
    chmod 0777 frontend/runtime
    chmod 0777 frontend/web/assets
    chmod 0755 yii
    chmod 0755 yii_test

... initialization completed.

Yii2 установлен!

Установка приложения Basic. ¶

Поскольку на виртуальном хостинге обычно только один webroot, то лучше использовать шаблонное приложение Basic. Прочитайте раздел Установка Yii и локально установите приложение. После того как оно начнет работать, можно внести необходимые корректировки, которые помогут разместить Basic на виртуальном хостинге.

Переименование webroot

Подключитесь к вашему виртуальному хостингу, используя FTP или другой способ. Скорее всего вы увидите следующее:

В приведенном выше описании – это webroot директория веб-сервера. Она может называться по-другому. Возможные названия: , или .

В Basic webroot называется . Перед загрузкой своего приложения на виртуальный хостинг, переименуйте локальный webroot на название webroot виртуального хостинга. Например, в или , в зависимости от наименования webroot вашего хостинга.

Корневая директория FTP доступна для записи

Если вы можете записать в корневую директорию, где располагаются , и , то загрузите сюда же , и остальные директории, так же, как и у вас, локально.

Добавим настройки для веб-сервера

В случае, если ваш сервер Apache, добавьте в директорию или аналогичную, где располагается , файл со следующим содержимым:

В случае использования nginx не требуется каких-либо дополнительных настроек.

Проверка требований

Для того чтобы запустить Yii, ваш веб-сервер должен соответствовать его требованиям. Минимальное требование к PHP – это его версия 5.4. Для того чтобы проверить требования, скопируйте из корневого каталога в каталог webroot и запустите его с помощью браузера, используя url . Не забудьте после проверки требований удалить файл .

Установка Composer на надежный хостинг украинский

Поскольку опыта настройки сервера или работы в консоле ОС Linux у меня немного, первая проблема возникла уже при инсталлировании Composer. На сервере инсталлированы несколько разных версий языка программирования php, и по умолчанию все команды консоли выполняет именно php 5.2.17. Но Composer требует именно версию php 5.3.2 или выше.

Решение было следующим:

php -r «readfile (‘https://getcomposer.org/installer’);» | php5.6

Обычные настройки сервера не позволяют сделать Composer выполняемым, запускать напрямую, в связи с чем запускаете его посредством интерпретатора PHP. Не забывайте указывать и версию языка программирования php:

php5.6 composer.phar install

Начальный этап сделан — Composer полностью установлен.

Конфигурирование сервера

Теперь можно добавить папку для нового проекта в своём Apache или Nginx сервере и поместить файлы туда. Это уже зависит от вашего сервера.

Первым делом посмотрим, подходит ли наш сервер. Запустите в консоли:

php requirements.php

или скопируйте этот файл в папку по умолчанию вашего сервера и откройте в браузере адрес . Yii2 требует PHP 5.4 и несколько подключенных расширений.

Если Вы используете Windows, то в файле нужно указать правильные пути:

include_path = ".;Z:\usr\local\php5\includes"
extension_dir = "Z:\usr\local\php5\ext"

и раскоментировать строки подключения необходимых расширений. Например, для работы только с MySQL-базами можно помимо Intl, MBString и MCrypt подключить только связанные с MySQL расширения:

extension=php_intl.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll

а не трогать.

Далее на любой системе полезно выставить временную зону:

date.timezone = "Europe/Moscow"

так как по умолчанию после установки PHP она пустая и вываливаются ошибки при использовании любой функции, связанной с датой и временем.

Если же вы на своём компьютере или хостинге не имеете возможности настроить рабочую папку хоста персонально (например, если вам доступна только папка или ), то можно либо «поднять» все файлы вверх так, чтобы использовать свою папку вместо :

controllers/
models/
views/
public_html/
    assets/
    css/
    index.php

либо (если есть доступ по SSH или на хостинге хороший файловый менеджер) поместить приложение в отдельную папку и создать символическую ссылку с на папку или настроить полное перенаправление в файле :

app/
    controllers/
    models/
    views/
    web/
        assets/
        css/
        index.php
public_html/ -> app/web/

Первый вариант менее предпочтителен тем, что приходится переименовывать папку. Это не очень удобно в случае использования систем контроля версий.

Итак, после этих нехитрых манипуляций с сервером по адресу вас должен встретить приветственный экран нового приложения. Если вместо этого покажутся ошибки о невозможности записи в папки и , то установите им нужные права.

Кстати о системах контроля версий. Если вы собираетесь использовать Git в своём проекте, то уже можно создать репозиторий:

cd project
git init
git commit --allow-empty -m 'Initial commit'

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

Например, константы и задаются в файлах , и . В них же при желании можно включить вывод всех ошибок:

error_reporting(-1);
ini_set('display_errors', 'on');

если нет возможности сделать это в .

Аналогично на компьютере каждого разработчика может быть (или вообще не быть) свой файл с личными настройками.

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

Открываем в корне и добавляем строку:

/yii

Создаём файл и указываем не индексировать личные настройки:

/db.php
/params.php

Создаём файл и вписываем исключаемые файлы конкретно в этой папке:

/.htaccess
/index.php
/index-test.php

Теперь, собственно, создаём файл , если не используем Nginx + PHP-FPM:

Order Allow,Deny
Allow from all

AddDefaultCharset utf-8

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Если же у вас сервер Nginx, то его можно настроить по примеру листинга в руководстве.

Теперь после настройки сервера нужно от некрасивых адресов перейти к удобным вроде . Добавим в файлы и секцию компонента :

'components' => 
    ...
    'urlManager' => 
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => 
            '' => '<_c>/view',
            '<_c:>' => '<_c>/index',
            '<_c:>/' => '',
        ,
    ,
    ...
,

Ненужные файлы уже исключены из индексирования, поэтому можно добавить всё остальное в репозиторий и зафиксировать текущее состояние:

git add .
git commit -m 'Created project'

Теперь нам нужно разобраться с настройками самого приложения.

Установка Yii2 advanced шаблона.

Способы установки:

C помощью composer.

Шаг 1.В командной строке переходим нужную в папку и выполняем команду, котрая создаст папку yii-application​ и загрузит туда yii2-app-advanced  шаблон:

Или создаем пустую папку yii-application сами, переходим в нее и загружаем внуть только шаблон без создания папки:

Шаг 2.Переходим в консоли в папку проекта yii-application, куда установлен yii2 и инициализируем окружение:

Выбираемм в консоли предлагаемое окружение 

Шаг 3.Открываем проект в браузере. На моем компьютере это

С помощью клонирования с github.

Или скачиваем в свою папку только содержимое yii2 без создания папки yii2-app-advanced:

Шаг 3.В консоли запускаем:

Шаг 4.Инициализируем окружение:

Шаг 5.

Из архива.

Шаг 1.Скачиваем архив yii2-app-advanced шаблона с гитхаб. Вот Вам сразу ссылка на архив https://github.com/yiisoft/yii2-app-advanced/archive/master.zipИли скачиваем самостоятельно с github https://github.com/yiisoft/yii2-app-advanced .Шаг 2.Распаковываем архив в нужную папку.Шаг 3.Переходим в консоли в корень проекта, где распаковали архив advanced шаблона и запускаем обновление композера:

Шаг 4.Инициализируем окружение проекта. В консоли в корне проекта запустим:

Выбираем подходящее окружение Development или ProductionШаг 5.Открываем проект в браузере. На моем компьютере это Также вне зависимости от способа установки нужно установить composer-asset-plugin , который обеспечивает поддержку для закачки bower/npm пакетов с помощью composer. 

На packagist.org плагин находится тут https://packagist.org/packages/fxp/composer-asset-pluginНу вот в общем  и все. Повторюсь, что если после всех манипуляций в браузере вы видете Forbidden ,то нужно проверить права в папке проекта и установить их. Вот какие права ставятся при установке advanced yii2:

После установки не забываем создать базу данных и запустить миграции… А на этом все. 

Создание Hello World!

Преобразуем URL

Для начала давайте изменим вид наши URL, активировав mod_rewrite. На главной странице кликните на пункт меню About. URL будет такого вида http://localhost:8888/hello/web/index.php?r=site%2Fabout. Мы хотим видеть что-то вроде этого http://localhost:8888/hello/web/site/about.

В каталоге config можно найти файлы конфигурации приложения для веб-версии, консоль-версии и настройки БД. Откройте и добавьте секцию с массивом настроек:

'components' => [
//...
  'urlManager' => ,
//...
'request' => [

Затем в папке с создайте файл с следующим содержимым:

RewriteEngine on

# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php

Убедитесь, что на вашем локальном сервере активирован .

Если все условия соблюдены, то теперь до вышеупомянутой страницы мы можем достучаться по адресу: http://localhost:8888/hello/web/site/about.

Создаём метод, который “скажет” Hello World!

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

public function actionSay($target = 'World')
{
    return $this->render('say', );
}

Теперь в URL нам нужно передать параметр , содержимое которого мы увидим на экране. Если параметр не будет задан, то переданная строка будет “World”. В Yii любой экшн должен начинаться с префикса “action”, а затем названия самого действия. Мы так и сделали. В классе написали . Yii будет искать префикс “action” для того, чтобы отличить действия от других методов.

Файл представления должен располагаться по следующей схеме: . Поэтому в , создаём файл :

<?php use yii\helpers\Html;
?>

Hello = Html::encode($target) ?>

Welcome to your Yii2 demonstration application.

В данном шаблоне у нас присутствует заголовок с начальным словом Hello следом за котором осуществляем вывод переменной . Заметка: для обеспечения безопасности мы кодируем пришедшее значение.

Теперь, если пройти по адресу http://localhost:8888/hello/web/site/say?target=Tuts%20Readers, вы должны увидеть:

Это самый просто пример использования Model View Controller в Yii2. Более детализированную информацию об MVC в Yii2 можно найти тут.

Теперь давайте настроим деплой нашего проекта на GitHub и удалённый сервер.

Немного о Yii 3.0

Следующей мажорной версией Yii будет 3.0. Подробный анонс будет позже, а пока кратко:

Обновлённая архитектура: фреймворк разбит на отдельные пакеты.
Это позволит собирать из них то, что вам нужно.

JavaScript-независимый: вместе с реорганизацией исходного кода Yii отвязывается от JavaScript-фреймворка в ядре.
Ключевые пакеты Yii не требуют jQuery.

Совместимость с PSR: Yii 3 будет следовать рекомендациям PHP-FIG. Уже реализованы многие PSR: логирование, кеш, DI и другие.

Yii 3.0 находится в стадии активной разработки. Подробный анонс будет сделан по достижению альфа-версии.

Архитектура Yii-приложения

Одной из фишек Yii является реализация парадигмы Model View Controller. Она не только позволяет создавать хорошо-структурированные приложения для лучшего понимания кода, но и облегчает кучу задач, которые на чистом PHP довольно-таки трудновыполнимы. К примеру обеспечение безопасности и автоматическая генерация кода. Благодаря Yii наш код можно с лёгкостью расширять и многоразово использовать.

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

<?php // на live-версии сайта первые две строки нужно закомментировать
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();

По умолчанию происходит запуск метода Index :

    public function actionIndex()
    {
        return $this->render('index');
    }

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

По умолчанию Yii выводит содержимое общего шаблона и шаблона страницы . В main.php описана общая для всех страниц HTML/CSS структура. Там же, в происходит вывод контента определённой страницы:

    = Breadcrumbs::widget() ? $this->params : [],
    ]) ?>
    = $content ?>

Переменная будет заменена сгенерированным кодом из файла .

Подробное пошаговое руководство по установке Yii2

Здравствуйте! Больше года не использовал PHP и не интересовался новинками веб-программирования.
Я уже как-то писал о своём опыте с фреймворком Yii. Тогда для того, чтобы развернуть фреймворк и сделать простенький веб-сайтик у меня ушло 80 часов. Но мир не стоит на месте и уже год как во всю используется Yii2. При необходимости реализовать очередной простенький проект, я решил обратиться именно к этому фреймворку. Но возникли некоторые трудности — Yii2 не устанавливается на имеющийся Denwer в стандартной поставке. Итак, эта статья пошагово поможет преодолеть эти трудности и позволит запустить Yii2 на Денвере (Denwer).

Что у меня есть: Денвер на локальной машине, на нём я веду разработку проекта и дешевый PHP 5.4 хостинг, на котором я публикую свой проект.

Что я хочу: Без установки composer и каких-либо других внешних инструментов установить сборку Yii2 base или advanced на Denwer.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий