- •Оглавление
- •I. Инструментарий
- •II. Шаблоны проектирования
- •1. Простой
- •2. Шаблонная функция
- •3. Метод буферизации
- •III. Фрэймворк Kohana
- •1. Знакомство с Kohana
- •2. Роутинг
- •7. Взаимодействие модели, контроллера и шаблона
- •8. Создание новых классов и подключение сторонних библиотек
- •9. Конфигурирование
- •10. Языковые файлы
- •11. Системные сообщения
- •12. Хелперы
- •Мы можем использовать любые строковые функции php, добавляя к ним класс utf8
- •13. Этапы создания проекта
- •14. Виджеты
- •Сложные запросы
- •17. Модуль orm
- •Т.Е. Если мы вторым параметромне указываем идендификатор, мы добавляем запись, если указываем – мы обновляем строку с указанным идентификатором.
- •Но если мы попытаемся удалить запись, которой не существует, то увидим сообщение об ошибке. Чтобы избавиться от этой ошибки, есть специальный метод, который проверяет, возвращает ли запрос результат.
- •Если метод возвращает true, то происходит удаление записи.
- •Если таблица userimage связана стаблице user связью belongs_to, то таблица user связана с таблицей userimage связью has_many.
- •19. Использование orm в виджетах
- •20. Модуль Auth
- •21. Модуль Image
- •22. Совместное использование модуля Image и js-скриптов, об-рабатывающих изображения.
- •Далее в контроллер добавим функцию для работы с изображениями.
- •В контроллере произведем вставку изображений в папку и запись в таблицу.
- •Чтобы вывести постраничную навигацию, например, на страницу пользователей, нам сперва нужно узнать общее количество пользователей, которое впоследствии нужно передать в параметр total_items.
- •А вот и сам экшн:
- •Как видно из листинга в шаблон мы передали переменную pagination, в которой будет находиться шаблон вывода ссылок на страницы. Осталось только вывести данную переменную в шаблоне.
- •Если в роуте используются параметры controller, action, directory либо id, то их необходимо передавать в класс pagination в метод route_params().
- •24. Операции crud. Разработка системы администрирования.
- •25. Модуль кэширования
- •В kohana также имеется отдельный модуль cache. Для его подключения необходимо раскомментировать нужную строку в файле bootstrap.Php
- •После подключения модуля необходимо скопировать из папки с модулем конфигурационный файл и переместить его в папку config/ в конфигурационном файле cache.Php имеется несколько групп настроек.
- •Каждая группа настроек работает со своим драйвером для кэширования. В зависимости от выбранного типа настроек, закэшированные файлы будут храниться либо в памяти компьютера, либо в других файлах.
- •28. Многоуровневые комментарии. Алгоритм NestedSets. Модуль orm-mptt
- •29. Модальное окно на ajax
- •30. Парсинг
- •31. Отладка
- •32. Профилирование
- •33. Документация kohana, модуль Userguide
- •34. Модуль Codebench
- •36. Другие модули Kohana
- •37. Состояние проекта
- •38. Дополнительное конфигурирование
- •39. Уязвимость Kohana
- •Установка yii
- •2. Структура yii
- •3. Конфигурирование yii, файл config/main.Php
- •4. Маршрутизация
- •7.Подключение шаблонов
- •8. Полезное.
- •9. Модель. Работа с базой данных.
- •11. Валидация
- •1. Определение класса модели
- •2. Определение правил проверки
- •4. Стандартные правила валидации
- •12. Конструктор форм
- •13. Хелперы форм
- •14. Обработка изображений
- •15. Постраничная навигация и cActiveDataProvider
- •16. Виджеты
- •17. Создание виджета круговой диограммы
- •18. Виджет cMenu
- •19. Хлебные крошки. Виджет cBreadcrumbs
- •20. Виджет cDetailView
- •21. Виджет chml, хелперы html
- •22. Виджет cListView
- •23. Виджет cGridView, таблица администратора
- •25. Модули
- •26. Авторизация
- •27. Контроль доступа на основе ролей
- •V. Краткий обзор и сравнение фрэймворков yii и Kohana
- •VI. Система контроля версий
- •Синхронизация локальных файлов с репозиторием
- •Открытие проекта Mercurial в среде ide
- •Получение файлов из репозитория
- •Импорт файлов в репозиторий
- •Изменение файлов исходного кода
- •Просмотр изменений в редакторе исходного кода
- •Просмотр информации о состоянии файла
- •Метки и условные цвета
- •Ярлыки состояния файлов
- •Окно контроля версий
- •Сравнение редакций файлов
- •Внесение изменений в локальную рабочую копию
- •Переходы между различиями в сравниваемых файлах
- •Изменение критериев просмотра
- •Слияние редакций файлов
- •Фиксация исходных файлов в репозитории
- •Обновление локальных копий
- •Выполнение фиксации
- •Обновление проблем
- •Выгрузка локальных изменений в общий репозиторий
- •Клонирование репозитория Git из GitHub с использованием протокола ssh
- •VI. Обзор рынка
- •VII. Программа курса php для продвинутых
- •Обзор рынка.
- •Php для продвинутых
7.Подключение шаблонов
Для подключения шаблонов в YII имеется два метода: render и renderPartial. Первый параметр – это путь к файлу-шаблона, второй – массив переменных, третий – булево значение, если стоит true, шаблон сразу на экран не выводится, его можно загнать в переменную.
RenderPartial генерирует кусочек кода, без подключения основного шаблона layouts.
-
Передача подшаблона в шаблон. Листинг 7.1
public function actionIndex(){
$result = $this->renderPartial('v_result', '', true);
$this->render('v_main', ['r'=>$result]);
}
Подключим систему layouts.
В папке components откроем файл controller.php
-
Подключение шаблона в настройках контроллера. Листинг 7.2
class Controller extends CController
{
public $layout='//layouts/column1';
}
Это значит, что в папке veiws мы находим папку layouts и файл column1.php. Рассмотрим данный файл.
-
column1.php. Листинг 7.3
<?php /* @var $this Controller */ ?>
<?php $this->beginContent('//layouts/main'); ?>
<div id="content">
<?php echo $content; ?>
</div><!-- content -->
<?php $this->endContent(); ?>
Данный файл, в свою очередь подключает основной шаблон main.php, в котором где-то в коде будет выводиться переменная $content.
Передача параметров из подшаблона render в основной layouts. Рассмотрим на примере формирования хлебных крошек.
-
Хлебные крошки, файл подшаблона. Листинг 7.4
$this->breadcrumbs=array(
'Contact',
);
Данный массив будет доступен в основном шаблоне layouts или в файлах, подключаемых к нему.
-
Вывод хлебных крошек в основном шаблоне. Листинг 7.5
<?php if(isset($this->breadcrumbs)):?>
<?php $this->widget('zii.widgets.CBreadcrumbs', array(
'links'=>$this->breadcrumbs,
)); ?><!-- breadcrumbs -->
<?php endif?>
Чтобы основной файл шаблона layout имел возможность перехватывать переменные из подшаблона, необходимо объявить эту переменную в контроллере, который вызвает данных layout.
-
Объявление переменных шаблона в контроллере. Листинг 7.6
public $breadcrumbs=array();
Здесь же можно задать значение по умолчанию для этой переменной.
8. Полезное.
Экшн по умолчанию – это экшн index. Но его можно переопределить с помощью свойства $defaultAction.
-
Объявление экшна по умолчанию. Листинг 8.1
Class MyController extends Controller{
public $defaultAction = ‘New’
public function actionNew(){
}
}
Собственные классы помещаем в папку protected/components.
Если класс содержит статичный метод, то вызваться он будет так: Имя_класса::метод(). Это значит, что файлы находящиеся в папке components, автоматически сканируются и подключаются к рабочему проекту.
BeforeSave – это метод переопределения перед сохранением.
-
Использования beforeSave() в методах. Листинг 8.2
public function beforeSave(){
$this->title = $this_title . ”___new”;
return parent::beforeSave();
}
Кроме beforeSave() можно использовать методы переопределения beforeDelete(), beforeFind() и т.д. Но надо обязательно возвращать родительскую функцию beforeSave().
Текущая модель – self::model().
setFlash – используется для формирования альтернативных значений. Рассмотрим пример использования.
-
Создание setFlash в экшне. Листинг 8.3
if($model->validate())
{
Yii::app()->user->setFlash('contact','Спасибо. Ваше сообщение отправлено.');
$this->refresh();
}
Перехват Flash-сообщений в шаблоне:
-
Создание setFlash в экшне. Листинг 8.4
<?php if(Yii::app()->user->hasFlash('contact')): ?>
<div class="flash-success">
<?php echo Yii::app()->user->getFlash('contact'); ?>
</div>
<?php endif; ?>
Вызов свойств из конфигурационного файла:
-
Вызов свойств из конфигурационного файла. Листинг 8.5
Yii::app()->db;
Скрыть index.php из адресной строки можно в файле main.php:
-
Вызов свойств из конфигурационного файла. Листинг 8.6
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'home' => 'base/index',
'page/<alias>'=>'base/page'
),
),
