![]() |
Урок 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 файл, в котором вам нужно указать свою конфигурацию.
Контроллеры в 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда. ![]() |
Мои услуги
|
© upread.ru 2013-2022 При перепечатке активная ссылка на сайт обязательна. |