Mercurial > pub > Impl
diff Lib/IMPL/Web/View/TTDocument.pm @ 195:7a920771fd8e
IMPL::Web::View changed document layout handling, docs, examples
author | cin |
---|---|
date | Wed, 11 Apr 2012 17:50:33 +0400 |
parents | 4d0e1962161c |
children | 292226770180 |
line wrap: on
line diff
--- a/Lib/IMPL/Web/View/TTDocument.pm Tue Apr 10 20:08:29 2012 +0400 +++ b/Lib/IMPL/Web/View/TTDocument.pm Wed Apr 11 17:50:33 2012 +0400 @@ -117,7 +117,7 @@ if ($this->layout) { $output = $this->context->include( - $this->loader->template($this->layout), + $this->loader->layout($this->layout), { content => sub { $output ||= $this->RenderContent($args); }, this => $this, @@ -182,9 +182,9 @@ использован как шаблон для форматирования объектной модели, вывод самого шаблона будет проигнорирован. Если обертка не задана, то результатом будет вывод самого скрипта шаблона. -Использование объектной модели документа позволяет решить задачи по созданию элементов управления -контейнеров, у которых может быть сложное содежимое. Примером таких элементов могут быть формы, -внутри форм элементы управления могут группироваться. +Использование объектной модели документа позволяет решить задачи по созданию контейнеров, +у которых может быть сложное содежимое. Примером таких элементов могут быть формы, +внутри форм элементы управления также могут группироваться. =head2 Элементы управления (компоненты) @@ -198,33 +198,33 @@ форматиорвания содержимого, фабрика связывает шаблон и класс элемента управления, для чего при загрузке шаблона используется свойство C<type> из метаданных. Фабрика загружается в документ при том только один раз, повторные загрузки фабрики возвращают уже загруженную. Для загрузки фабрики используется метод -C<require()>. - +C<require()> с указанием элемента управления. =head2 Порядок обработки документа +Построение представления данных состоит из двух этапов + =over -=item 1 Создается документ при помощи метода C<TTLoader::document()> +=item 1 Создание объектной модели документа. На данном этапе создаются все элементы управления. -=item 1 При создании документа (в конструкторе), происходит выполнение блока C<CTOR> - -=item 1 При вызове метода C<TTDocument::Render()> устанавливаются переменные C<this>, C<document> -и шаблон обрабатывается при помощи метода C<process()> контекста документа. +=item 1 Преобразование объектной модели в конечнное представление. На данном этапе происходит +форматирование документа. =back + =head2 Загрузка элемента управления =over =item 1 C<TInput = require('my/org/input')> -=item 1 Загружает шаблон C<my/org/input.tt> +=item 1 Загружается шаблон C<my/org/input.tt> -=item 1 Создает фабрику элементов управления с собственным контекстом, унаследованным от контекст документа. +=item 1 Создается фабрика элементов управления с собственным контекстом, унаследованным от контекст документа. -=item 1 Выполняет шаблон в пространстве имен фабрики +=item 1 При первом создании элемента управления фабрика инициализируется выполнением блока C<INIT>. =back @@ -234,13 +234,11 @@ =item 1 C<< TInput.new('login') >> -=item 1 Если это первый элемент управления, то выполняетя статический конструктор в контексте фабрики - =item 1 Создается новый дочерний контекст к контексту фабрики =item 1 Создается экземпляр элемента управления -=item 1 Выполняется блок конструктора в контексте элемента управления, параметр C<this> имеет значение +=item 1 Выполняется блок конструктора C<CTOR> в контексте элемента управления, параметр C<this> имеет значение нового экземпляра элемента управления =back @@ -249,10 +247,103 @@ =over -=item C<CTOR($template, %options)> +=item C<CTOR($template, $contextOpts, $loader[, $vars])> + +Создает экземпляр документа с указанным шаблоном и параметрами. + +=over + +=item C<$template> + +C<Template::Document> шаблон документа. + +=item C<$contextOpts> -Создает экземпляр документа с указанным шаблоном и параметрами, параметры +C<HASH> Параметры контекста C<Template::Context> для документа. Эти параметры будут сохранены +в свойстве C<opts>, а также на их основе будет создан контекст текщего документа. Как правило +эти параметы задаются загрузчиком документа C<IMPL::Web::View::TTLoader>, таким образом, что +C<Template::Stash> создаваемого контекста наследует переменные из контекста загрузчика. + +=item C<$loader> + +C<IMPL::Web::View::TTLoader> загрузчик, который будет использоваться для загрузки элементов управления, +а также для получения обертки, заданной в свойстве документа C<layout>. + +=item C<$vars> + +C<HASH> Необязательный параметр. переменные которые будут переданы в блок конструктора C<INIT>. +Как правило они используются для передачи данных для построения документа + +=back =back +=over + +=item C<templateVars($name[,$newValue])> + +Получает или задает переменную для шаблона документа. Имя переменнной может быть составным, +например C<'my.var.name'>, см. C<Template::Stash::set()>. + +=item C<require($controlName)> + +Загружает фабрику элемента управления, если она уже была загружена, возвращает на нее ссылку. +При загрузки фабрики для нее создается собственный контекст на основе параметров из свойства +C<opts> и ее пространство имен наследуется от пространства имен документа из свойства C<stash>. + +=item C<Render($vars)> + +Выполняет блок C<renderBlock> документа для получения конечного представления, C<$vars> +содержит переменные для блока. + +=item C<RenderContent($vars)> + +Выполняет шаблон документа для получения представления содержимого, в отличии от +метода C<Render> не использует обертку указанную в свойстве C<layout>, если обертка +не указана, то эти методы идентичны. + +=item C<[get,set]layout> + +Обертка, которая будет использована для построения представления документа. В обертке +будет доступна специальная переменная C<content>, при обращении к которой будет B<выполнен> +метод C<RenderContent()> и возвращен результат его работы. Для получения шаблона обертки +используется загрузчик из свойства C<loader>. + +=item C<[get]opts> + +Параметры контекста, используются для создания контекстов фабрик элементов управления. + +=item C<[get]loader> + +Загрузчик, используется для загрузки шаблонов фабрик элементов управления и обертки. + +=item C<[get]controls> + +C<HASH> Коллекция загруженных фабрик элементов управления, ключем является +квалифицированное имя элемента управления. + +=item C<[get]stash> + +C<Template::Stash> Пространство имен документа, оно используется как родительское +для пространств имен загружаемых фабрик элементов управления. + +=back + +=head1 TEMPLATES + +=begin text + +[%META layout='default'%] +[% BLOCK CTOR; + section('top','TOP'); + section('bottom','BOTTOM'); + section('client','CLIENT'); +END %] +[% BLOCK TOP; + TMenu = require('my/org/Menu'); + append(TMenu.new()); +END %] + +=end + =cut \ No newline at end of file