Едем дальше:
Модель
Модель (model) — это экземпляр класса CModel или класса, унаследованного от него. Модель используется для хранения данных и применимых к ним бизнес-правил.
Модель представляет собой отдельный объект данных. Это может быть запись таблицы базы данных или HTML-форма с полями для ввода данных. Каждое поле объекта данных представляется атрибутом модели. Каждый атрибут имеет текстовую метку и может быть проверен на корректность, используя набор правил.
Yii предоставляет два типа моделей: модель формы и Active Record. Оба типа являются наследниками базового класса CModel.
Модель формы — это экземпляр класса CFormModel. Она используется для хранения данных, введённых пользователем. Как правило, мы получаем эти данные, обрабатываем, а затем избавляемся от них. Например, на странице авторизации модель такого типа может быть использована для представления информации об имени пользователя и пароле. Подробное описание работы с формами приведено в разделе Работа с формами.
Active Record (AR) — это шаблон проектирования, используемый для абстрагирования доступа к базе данных в объектно-ориентированной форме. Каждый объект AR является экземпляром класса CActiveRecord или класса, унаследованного от него, и представляет отдельную строку в таблице базы данных. Поля этой строки соответствуют свойствам AR-объекта. Подробнее с AR-моделью можно ознакомиться в разделе Active Record
ну про модель понятно.одна работает с формами и введенными данными
вторая какой то шаблон там дальше посмотрю
Дальше:
Представление — это PHP-скрипт, состоящий преимущественно из элементов пользовательского интерфейса. Он может включать выражения PHP, однако рекомендуется, чтобы эти выражения не изменяли данные и оставались относительно простыми. Следуя концепции разделения логики и представления, большая часть кода логики должна быть помещена в контроллер или модель, а не в скрипт представления.
АГА тут все оказывается нечетко.большая часть в модель.но все таки что то можно и во вьюху загнать
смотрим дальше
У представления есть имя, которое используется, чтобы идентифицировать файл скрипта представления в процессе рендеринга. Имя представления должно совпадать с названием файла представления. К примеру, для представления edit соответствующий файл скрипта должен называться edit.php. Чтобы отобразить представление, необходимо вызвать метод CController::render(), указав имя представления. При этом метод попытается найти соответствующий файл в директории protected/views/ControllerID.
ну тут понятно.нужно отрендерить.
это ясно.
Внутри скрипта представления экземпляр контроллера доступен через $this. Таким образом, мы можем обратиться к свойству контроллера из кода представления: $this->propertyName.Ага.ну это понятно
Кроме того, мы можем использовать следующий способ для передачи данных представлению:
$this->render('edit', array(
'var1'=>$value1,
'var2'=>$value2,
));
В приведённом коде метод render() преобразует второй параметр — массив — в переменные. Как результат, внутри представления будут доступны локальные переменные $var1 и $var2
ну это я так понимаю реч идет о том как из контроллера передать(хотя блять какого тут this,непонятно).ладна.узнаем.
Макет (layout) — это специальное представление для декорирования других представлений. Макет обычно содержит части пользовательского интерфейса, общие для нескольких представлений. Например, макет может содержать верхнюю и нижнюю части страницы, заключая между ними содержание другого представления:
…здесь верхняя часть…
<?php echo $content; ?>
…здесь нижняя…
Здесь $content хранит результат рендеринга представления.
Макет применяется неявно при вызове метода render(). По умолчанию в качестве макета используется представление protected/views/layouts/main.php. Его можно изменить путём установки значений CWebApplication::layout или CController::layout. Для рендеринга представления без применения макета необходимо вызвать renderPartial().Ну как бы мне это нужно было.Но на практике посмотрим как оно работает.
Виждеты:
Виджет
Виджет (widget) — это экземпляр класса CWidget или унаследованного от него. Это компонент, применяемый, в основном, с целью оформления. Виджеты обычно встраиваются в представления для формирования некоторой сложной, но в то же время самостоятельной части пользовательского интерфейса. К примеру, виджет календаря может быть использован для рендеринга сложного интерфейса календаря. Виджеты позволяют повторно использовать код пользовательского интерфейса.
Для подключения виджета необходимо выполнить в коде:
<?php $this->beginWidget('path.to.WidgetClass'); ?>
…некое содержимое, которое может быть использовано виджетом…
<?php $this->endWidget(); ?>
или
<?php $this->widget('path.to.WidgetClass'); ?>
Последний вариант используется, когда виджет не имеет внутреннего содержимого.
Компонент
Yii-приложения состоят из компонентов–объектов, созданных согласно спецификациям. Компонент (component) — это экземпляр класса CComponent или производного от него. Использование компонента, как правило, включает доступ к его свойствам, а также вызов и обработку его событий. Базовый класс CComponent устанавливает правила, согласно которым определяются свойства и события.
Свойство компонента
Свойство компонента схоже с открытой переменной-членом класса (public member variable). Мы можем читать или устанавливать его значение. Например:
$width=$component->textWidth; // получаем значение свойства textWidth
$component->enableCaching=true; // устанавливаем значение свойства enableCaching
Для того чтобы создать свойство компонента, достаточно объявить открытую переменную-член в классе компонента. Более гибкий вариант — определить методы, считывающие (getter) и записывающие (setter) значение этой переменной, например:
public function getTextWidth()
{
return $this->_textWidth;
}
public function setTextWidth($value)
{
$this->_textWidth=$value;
}
В приведённом коде определено свойство textWidth (имя не чувствительно к регистру), доступное для записи.
При обращении к свойству вызывается метод чтения getTextWidth(), возвращающий значение свойства. Соответственно, при присвоении значения свойству будет вызван метод записи setTextWidth(). Если метод записи не определён, то свойство будет доступно только для чтения, а при попытке записи будет выброшено исключение. Использование методов чтения и записи имеет дополнительное преимущество: при чтении или записи значения свойства могут быть выполнены дополнительные действия (такие как проверка на корректность, вызов события и др.).
События компонента
События компонента — это специальные свойства, в качестве значений которых выступают методы (называемые обработчиками событий). Назначение метода событию приведет к тому, что метод будет вызван автоматически при возникновении этого события. Поэтому поведение компонента может быть изменено совершенно отлично от закладываемого при разработке.
Событие компонента объявляется путём создания метода с именем, начинающимся на on. Так же как и имена свойств, заданных через методы чтения и записи, имена событий не чувствительны к регистру. Следующий код объявляет событие onClicked:
public function onClicked($event)
{
$this->raiseEvent('onClicked', $event);
}
где $event — это экземпляр класса CEvent или производного от него, представляющего параметр события. К событию можно подключить обработчик как показано ниже:
$component->onClicked=$callback;
где $callback — это корректный callback-вызов PHP (см. PHP-функцию call_user_func). Это может быть либо глобальная функция, либо метод класса. В последнем случае вызову должен передаваться массив: array($object,'methodName').
Обработчик события должен быть определён следующим образом:
function methodName($event)
{
…
}
где $event — это параметр, описывающий событие (передаётся методом raiseEvent()). Параметр $event — это экземпляр класса CEvent или его производного. Как минимум, он содержит информацию о том, кто вызвал событие.
Обработчик события может быть анонимной функцией, требующей наличия версии PHP 5.3+. Например,
$component->onClicked=function($event) {
…
}
Если теперь использовать метод onClicked(), то в нём будет вызвано событие onClicked. Назначенный ему обработчик будет запущен автоматически.
Событию могут быть назначены несколько обработчиков. При возникновении события обработчики будут вызваны в порядке их назначения. Если в обработчике необходимо предотвратить вызов последующих обработчиков, необходимо установить $event->handled в true.
ну про компонент я понял.толька как его использовать неясно.будем читать дальше
Комментариев нет:
Отправить комментарий