Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
LokiHellbringer
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 34
1

Yii 2 - говорим Hello World?

30.09.2015, 04:05. Просмотров 678. Ответов 3
Метки нет (Все метки)

СВЧ с нестабильным пуканом - мимо. Вопрос от неразбирающегося человека.
Здравствуйте. Только сел изучать Yii 2 (плюс слаб в ООП и MVC) и тут же запоролся на первой же странице документации.
Вот пример, где создается контроллер:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
    // ...существующий код...
    public function actionSay($message = 'Привет')
    {
        return $this->render('say', ['message' => $message]);
    }
}
И вид:
PHP
1
2
3
4
<?php
use yii\helpers\Html;
?>
<?= Html::encode($message) ?>
Где находится функция вывода на экран, все эти функции не выводят ничего на экран:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
function render()
    {
        if (!isset($this->result)) {
            $this->usageError('Nothing to render!');
        }
        $baseViewFilePath = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'views';
        if (!empty($_SERVER['argv'])) {
            $viewFileName = $baseViewFilePath . DIRECTORY_SEPARATOR . 'console' . DIRECTORY_SEPARATOR . 'index.php';
        } else {
            $viewFileName = $baseViewFilePath . DIRECTORY_SEPARATOR . 'web' . DIRECTORY_SEPARATOR . 'index.php';
        }
        $this->renderViewFile($viewFileName, $this->result);
    }
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function renderViewFile($_viewFile_, $_data_ = null, $_return_ = false)
    {
        // we use special variable names here to avoid conflict when extracting data
        if (is_array($_data_)) {
            extract($_data_, EXTR_PREFIX_SAME, 'data');
        } else {
            $data = $_data_;
        }
        if ($_return_) {
            ob_start();
            ob_implicit_flush(false);
            require($_viewFile_);
 
            return ob_get_clean();
        } else {
            require($_viewFile_);
        }
    }
PHP
1
2
3
4
public static function decode($content)
    {
        return htmlspecialchars_decode($content, ENT_QUOTES);
    }
Что такое result и где он объявляется? Куда передаются параметры функции 'say' и ['message' => $message], если они не используются внутри функции render()? Что такое ['message' => $message]? Безымянный ассоциативный массив?
Я так понял, что явно ни один из этих файлов не запускается, а работаем только с файлом index.php, но там столько наследований, что нужно заранее знать весь фреймворк, чтобы написать и понять такие примеры. Напишите кто знает что откуда берется и что куда передается в этом примере? Каким образом при запуске index.php в итоге подключатся контроллер и вид? Как дойти до функции, ответственной за вывод на экран? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2015, 04:05
Ответы с готовыми решениями:

Почему в yii может быть пустым Yii::app()->request->urlReferrer?
Добрый день, Засунул в экшн контроллера (users/registration) такую...

Как в Yii можно выполнить действие обратное Yii::app()->user->checkAccess('3')?
Руководствовался рецептом yiiframework.ru/doc/cookbook/ru/access.rbac.file ....

Yii ListView
есть таблица, после выполнения действия со строкой, к примеру удаление, таблица...

Установка Yii 1.1.15
Ребят помогите с установкой я новичок в php. Начну сначала. На компе стоит...

Видеоуроки по Yii
Посоветуйте какие-то видеоуроки по этому фреймворку на англ/ру...

3
autumn
29 / 29 / 14
Регистрация: 23.10.2014
Сообщений: 79
30.09.2015, 10:28 2
В ядро фреймворка, думаю, вам пока лезть не надо
Отличным подспорьем вам в понимании будут видео здесь https://www.youtube.com/playlist?lis...IzBDzFSCwX8eup

Файл, с которого все начинается - web/index.php
В предпоследней строчке этого файла подключается файл конфигурации
PHP
1
$config = require(__DIR__ . '/../config/web.php');
В него нужно вносить свои настройки(в частности, он подключает файл из этой же директории db.php, где вы пропишете настройки подключения к базе данных)
последняя строчка файла web/index.php запускает ваше приложение

далее анализируется содержимое адресной строки браузера, на основании чего делается вывод, к какому контроллеру и к какому его экшену обращаться
по умолчанию это SiteController, функция actionIndex()
вам нужно настроить красивые адреса, вот хорошее видео на эту тему https://www.youtube.com/watch?v=RTzjXuotDy4

функция render() отображает представление
в данном случае
PHP
1
$this->render('say', ['message' => $message]);
его надо искать в папке views/site/say.php

второй параметр функции рендер - ассоциативный массив, где ключ - это имя переменной в представлении, т е если бы у вас было бы
PHP
1
2
3
4
5
$this->render('hello', [
    'message' => $message,
    'error'   => $text,
    'body'    => $content,
]);
то в представлении views/site/hello.php у вас будут доступны 3 переменные - $message, $error, $body
0
LokiHellbringer
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 34
30.09.2015, 13:21  [ТС] 3
Я впервые вижу синтаксис ассоциативного массива без названия. Это как?
Это все понятно и есть в справке, а где сам вывод прописан?
0
arni1980
16 / 16 / 6
Регистрация: 02.06.2015
Сообщений: 90
20.10.2016, 23:07 4
тут:
PHP
1
<?= Html::encode($message) ?>
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2016, 23:07

Авторизация в Yii
Опишу проблему. Задача стоит такая. Когда мы открываем наш &quot;сайт&quot; то...

Возможности Yii
Вот уже неделю как изучаю Yii и появилось некое ощущение, что фреймворк...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru