SlideShare uma empresa Scribd logo
1 de 48
Интеграция Zend Framework c JavaScript-фрэймворками jQuery и Dojo Toolkit Георгий   Туревич , ведущий веб-программист ,   Wizartech 27 марта 2010 г. Санкт-Петербург
Немного о себе ,[object Object],[object Object],[object Object],[object Object],[object Object]
Возможности   ,[object Object],[object Object],[object Object],[object Object]
Специфика  Dojo + ZF ,[object Object],[object Object]
ZF + Dojo Toolkit
Настройка окружения <style type=&quot;text/css&quot;>      @import &quot;/js/dojo-toolkit/dijit/themes/tundra/tundra.css&quot;; </style>  <script type=&quot;text/javascript&quot;>      var djConfig = {&quot;isDebug&quot;:true,&quot;parseOnLoad&quot;:true};  </script>  <script type=&quot;text/javascript&quot;       src=&quot;/js/dojo-toolkit/dojo/dojo.js&quot;></script>  <script type=&quot;text/javascript&quot;>      dojo.require(&quot;dojo.io.script&quot;);      dojo.require(&quot;dojo.fx&quot;);      dojo.require(&quot;dijit.form.Button&quot;);  </script>   Типичный код в  <head>  секции для настройки  Dojo :
Настройка окружения Настройка с помощью  dojo() view- хелпера Во время инициализации: <?=$this -> dojo ()   -> enable ()   -> setDjConfig (array(          'isDebug'  =>  true ,          'parseOnLoad'  =>  true      ))   -> setLocalPath ( '/js/dojo-toolkit/dojo/dojo.js' )   -> addStyleSheetModule ( 'dijit.themes.tundra' )   -> requireModule (array(          'dojo.io.script' ,          'dojo.fx' ,          'dijit.form.Button'      )) ?> Указываем в макете: Zend_Dojo :: enableView ( $view );
Настройка окружения Настройка с помощью плагина инициализации ресурса  Dojo  (  >= 1.10) В макете указываем: <?=$this -> dojo () ?> В  application.ini  указываем: resources.dojo.djConfig.isDebug = 1 resources.dojo.djConfig.parseOnLoad = 1 resources.dojo.localPath = &quot;/js/dojo-toolkit/dojo/dojo.js&quot; resources.dojo.requireModule[] = &quot;dojo.io.script&quot; resources.dojo.requireModule[] = &quot;dojo.fx&quot; resources.dojo.requireModule[] = &quot;dijit.form.Button&quot;
Настройка окружения Доступная функциональность  dojo() view- хелпера ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Настройка окружения Доступные методы  dojo() view- хелпера ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Работа с виджетами View- хелперы В шаблоне: <h1>Форма</h1> <div class=&quot;tundra&quot;>   <form>    <?=$this -> editor ( 'editor' ) ?>    <?=$this -> button (        'send' ,  'Отправить ' ) ?>   </form> </div>
Работа с виджетами Элементы форм В контроллере: $form  = new  Zend_Dojo_Form (); $form -> addElement ( 'editor' ,  'editor' ); $form -> addElement (      'button' ,      'send' ,     array( 'label'  =>  'Отправить' ) ); $this -> view -> form  =  $form ;   В шаблоне: <h1>Форма</h1> <div class=&quot;tundra&quot;> <?=$this -> form?> </div>
Работа с виджетами Элементы форм Состав элементов:  - Button -  CheckBox -  ComboBox  /  FilteringSelect -  CurrencyTextBox -  DateTextBox -  HorizontalSlider  /  VerticalSlider -  MappedTextBox -  NumberSpinner -  NumberTextBox -  RadioButton -  SimpleTextarea -  Slider -  SubmitButton -  TextBox -  Textarea -  TimeTextBox -  ToggleButton -  ValidationTextBox
Работа с виджетами Виджеты компоновки ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Работа с виджетами Виджеты компоновки
Работа с виджетами Виджеты компоновки <div class=&quot;tundra&quot;> <? $this -> tabContainer ()-> captureStart ( 'masterLayout' , array(     'style'  =>  'width: 200px; height: 20em;' ))  ?>      <?=$this -> contentPane ( 'menuPane' ,  'This is first tab' , array(          'title'  =>  'tab 1'      )) ?>      <? $this -> contentPane ()-> captureStart ( 'navPane' , array(          'title'  =>  'tab 2' )     ) ?>         This<br>         is<br>         second<br>         tab      <?=$this -> contentPane ()-> captureEnd ( 'navPane' ); ?> <?=$this -> tabContainer ()-> captureEnd ( 'masterLayout' ) ?> </div>
Работа с виджетами Виджеты компоновки
Работа с виджетами Виджеты компоновки $form  = new  Zend_Dojo_Form (); $subForm1  = new  Zend_Dojo_Form (); $subForm2  = new  Zend_Dojo_Form (); $form -> addSubForm ( $subForm1 ,  'subform1' ); $form -> addSubForm ( $subForm2 ,  'subform2' ); $this -> view -> form  =  $form ; $form -> setDecorators (array(      'FormElements' ,     array( 'TabContainer' , array(          'id'  =>  'myTabs' ,          'style'  =>  'width: 300px; height: 20em'      )),      'Form' , ));   -  Формируем объекты формы и суб-форм -  Устанавливаем форме декоратор  TabContainer
Работа с виджетами Виджеты компоновки $subForm1 -> setDecorators (array(      'FormElements' ,     array( 'HtmlTag' , array( 'tag'  =>  'dl' )),     array( 'ContentPane' , array( 'title'  =>  'Tab 1' )) )); $subForm2 -> setDecorators (array(      'FormElements' ,     array( 'HtmlTag' , array( 'tag'  =>  'dl' )),     array( 'ContentPane' , array( 'title'  =>  'Tab 2' )) ));   -  Устанавливаем суб-формам декоратор  ContentPane
Работа с виджетами Виджеты компоновки $subForm1 -> addElement ( 'Editor' ,  'editor' , array(      ' label '   =>  ' Editor: ' , )); $subForm1 -> addElement ( 'DateTextBox' ,  'date' , array(      ' label '   =>  ' Date: ' ,  'style'  =>  'width: 200px' )); $subForm2 -> addElement ( 'FilteringSelect' ,  'acl' , array(      ' label '   =>  '   City: ' ,  'MultiOptions'  => array(          '1'  =>  'New York' ,  '2'  =>  'Berlin' ,          '3'  =>  'Bern' ,  '4'  =>  'Boston'      ) ));   -  Добавляем элементы в суб-формы
Ajax
Ajax В одном действии генерируем форму: public function  dojoDataExampleAction () {      $form  = new  Zend_Dojo_Form ();      $form -> addElement ( 'FilteringSelect' ,  'city' , array(          'label'  =>  'City' ,          'storeId'  =>  'cityStore' ,          'storeType'  =>  'dojo.data.ItemFileReadStore' ,          'storeParams'  => array(              'url'  =>  '/json/simple-city-store/'          ),          'dijitParams'  => array(              'searchAttr'  =>  'name'          )     ));      $this -> view -> form  =  $form ; }
Ajax Генерируем  JSON  классическим методом: public function  simpleCityStoreAction () {      Zend_Controller_Action_HelperBroker :: getStaticHelper ( 'ViewRenderer' ) -> setNoRender ( 1 );      Zend_Layout :: getMvcInstance ()-> disableLayout ();      $data  = array(         array( 'id'  =>  1 ,  'name'  =>  'Волгоград' ),         array( 'id'  =>  2 ,  'name'  =>  'Москва' ),         array( 'id'  =>  3 ,  'name'  =>  'Минск' ),         array( 'id'  =>  4 ,  'name'  =>  'Мурманск' )     );      $dojoData  = new  Zend_Dojo_Data ( 'id' ,  $data );     echo  $dojoData ; }
Ajax Генерируем  JSON  с применением помощника  AutoComplete : public function  simpleCityStoreAction () {      $data  = array(         array( 'id'  =>  1 ,  'name'  =>  'Волгоград' ),         array( 'id'  =>  2 ,  'name'  =>  'Москва' ),         array( 'id'  =>  3 ,  'name'  =>  'Минск' ),         array( 'id'  =>  4 ,  'name'  =>  'Мурманск' )     );      $this -> _helper -> autoCompleteDojo ( new  Zend_Dojo_Data ( 'id' ,  $data ),  true ); }   Что делает  AutoComplete : - автоматически деактивирует  Layout  и  ViewRender -  при необходимости трансформирует  array -> Zend_Dojo_Data -  записывает данные в  response- объект   и отправляет его пользователю - облегчает жизнь программисту :)
Ajax Отдаем данные в формате  dojo.data : { &quot;identifier&quot;:&quot;id&quot;, &quot;items&quot;:[ {&quot;id&quot;:1,&quot;name&quot;:&quot;Волгоград&quot;}, {&quot;id&quot;:2,&quot;name&quot;:&quot;Москва&quot;}, {&quot;id&quot;:3,&quot;name&quot;:&quot;Минск&quot;}, {&quot;id&quot;:4,&quot;name&quot;:&quot;Мурманск&quot;} ] }
Ajax Получаем результат:
Выпуск в эксплуатацию В пакете  Dojo Toolkit  поставляется утилита  ShrinkSafe   (Java), которая реализует следующие функции: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Выпуск в эксплуатацию Для утилиты  ShrinkSafe  требуется 2 вида файлов: ,[object Object],[object Object],[object Object],[object Object],Смотри подробнее:  http://docs.dojocampus.org/build/index
Выпуск в эксплуатацию Zend_Dojo_BuildLayer   автоматически генерирует содержание профиля и содержание слоя на основе данных из  view- хелпера  dojo() . $build  = new  Zend_Dojo_BuildLayer (array(      'view'  =>  $this -> view ,      'layerScriptPath'  =>  'custom.main.js' ,      'layerName'  =>  'custom.main' , )); $profile  =  $build -> generateBuildProfile (); $layerScript  =  $build -> generateLayerScript ();
Выпуск в эксплуатацию Слой сборки: dojo.provide(&quot;custom.main&quot;); (function(){ dojo.require(&quot;dojo.io.script&quot;); dojo.require(&quot;dojo.fx&quot;); dojo.require(&quot;dijit.form.Button&quot;); })();
Выпуск в эксплуатацию Профиль сборки: dependencies = { action:&quot;release&quot;, optimize:&quot;shrinksafe&quot;, layerOptimize:&quot;shrinksafe&quot;, copyTests:false, loader:&quot;default&quot;, cssOptimize:&quot;comments&quot;, releaseName:&quot;custom&quot;, layers:[{ name:&quot;custom.main.js&quot;, layerDependencies:[], dependencies:[&quot;custom.main&quot;] }], prefixes:[ [&quot;custom&quot;,&quot;../custom&quot;], [&quot;dojo&quot;,&quot;../dojo&quot;], [&quot;dijit&quot;,&quot;../dijit&quot;] ] };
Планы на будущее ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ZF + jQuery
Настройка окружения Типичный код в  <head>  секции для настройки  jQuery : <link href=&quot;/jquery/css/ui-lightness/jquery-ui-1.8.custom.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot;> <script type=&quot;text/javascript&quot;  src=&quot;/jquery/js/jquery-1.4.2.min.js&quot;></script> <script type=&quot;text/javascript&quot; src=&quot;/jquery/js/jquery-ui-1.8.custom.min.js&quot;></script>
Настройка окружения Настройка с помощью  jQuery() view- хелпера Во время инициализации: Указываем в макете: $view -> addHelperPath ( &quot;ZendX/JQuery/View/Helper&quot; ,  &quot;ZendX_JQuery_View_Helper &quot; );   $view -> jQuery ()      -> enable ()      -> setLocalPath ( '/jquery/js/jquery-1.4.2.min.js' )      -> addStylesheet ( '/jquery/css/ui-lightness/jquery-ui-1.8.custom.css' )      -> setUiLocalPath ( '/jquery/js/jquery-ui-1.8.custom.min.js' );
Настройка окружения Настройка с помощью плагина инициализации ресурса  jQuery В макете указываем: <?=$this -> jQuery () ?> В  application.ini  указываем: pluginPaths.ZendX_Application_Resource_ = &quot;ZendX/Application/Resource&quot; resources.jquery.localpath = &quot;/jquery/js/jquery-1.4.2.min.js&quot; resources.jquery.stylesheet = &quot;/jquery/…/jquery-ui-1.8.custom.css&quot; resources.jquery.uilocalpath = &quot;/jquery/js/jquery-ui-1.8.custom.min.js&quot;
Настройка окружения Доступная функциональность  jQuery() view- хелпера - Установка и использование  cdn- версий  jQuery  и  jQuery UI - Использование  ssl  с  cdn -  Установка локальных путей к  jQuery  и  jQuery UI - Добавление  javascript- кода для  onLoad  событий в секции  <head> - Добавление  javascript- файлов в секци  <head> - Добавление  javascript- кода   в секцию  <head> -  Добавление файлов стилей
Настройка окружения Методы  jQuery() view- хелпера setUiVersion() getUiVersion() useUiCdn() useUiLocal() setUiLocalPath() getUiLocalPath() onLoadCaptureStart() onLoadCaptureEnd() javascriptCaptureStart() javascriptCaptureEnd() addJavascriptFile($path) getJavascriptFiles() clearJavascriptFiles() addJavascript($statement) getJavascript() clearJavascript() addStylesheet($path) getStylesheets() addOnLoad($statement) getOnLoadActions() setRenderMode($mask) getRenderMode() setCdnSsl($bool)
Работа с виджетами View- хелперы
Работа с виджетами View- хелперы
Работа с виджетами Элементы форм $form  = new  ZendX_JQuery_Form ();   $subForm1  = new  ZendX_JQuery_Form ();  $subForm2  = new  ZendX_JQuery_Form ();  $form -> addSubForm ( $subForm1 ,  'subform1' );  $form -> addSubForm ( $subForm2 ,  'subform2' );  $form -> setDecorators (array(       'FormElements' , array( 'TabContainer' , array(           'id'  =>  'tabContainer' ,  'style'  =>  'width: 600px;'       )),       'Form' ,  ));  -  Формируем объекты формы и суб-форм -  Устанавливаем форме декоратор  TabContainer
Работа с виджетами Элементы форм $subForm1 -> setDecorators (array(       'FormElements' , array( 'HtmlTag' , array( 'tag'  =>  'dl' )),      array( 'TabPane' , array( 'jQueryParams'  => array(           'containerId'  =>  'mainForm' ,  'title'  =>  'DatePicker'       )))  ));  $subForm2 -> setDecorators (array(       'FormElements' ,      array( 'HtmlTag' , array( 'tag'  =>  'dl' )),      array( 'TabPane' , array( 'jQueryParams'  => array(           'containerId'  =>  'mainForm' ,           'title'  =>  'AutoComplete and Slider'       )))  ));  -  Устанавливаем суб-формам декоратор  TabPane
Работа с виджетами Элементы форм $subForm1 -> addElement ( 'DatePicker' ,  'datePicker1' , array(       &quot;label&quot;  =>  &quot;Date Picker:&quot; ,       'JQueryParam'  => array( 'dateFormat'  =>  'dd.mm.yy' )  ));  $subForm2 -> addElement ( 'Slider' ,  'slider1' , array(       &quot;label&quot;  =>  &quot;Slider:&quot; ,       'JQueryParams'  => array( 'defaultValue'  =>  '75' )  ));  $subForm2 -> addElement ( 'AutoComplete' ,  'acl' , array(       &quot;label&quot;  =>  &quot;Autocomplete:&quot; ,  'JQueryParams'  => array(           'source'  => array(               'New York' ,  'Berlin' ,  'Bern' ,  'Boston'           )      )  ));   -  Добавляем элементы в суб-формы
Работа с виджетами ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Планы на будущее ,[object Object],[object Object],[object Object]
Подробнее? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Мастерклассы по  JavaScript ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Вопросы ? ,[object Object],[object Object],Туревич Георгий, ведущий веб-программист  Wizartech

Mais conteúdo relacionado

Mais procurados

Индексирование в Magento
Индексирование в MagentoИндексирование в Magento
Индексирование в Magento
Magecom Ukraine
 
DevHub 3 - Pricing
DevHub 3 - PricingDevHub 3 - Pricing
DevHub 3 - Pricing
Magento Dev
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
Media Gorod
 
Оформляем результаты проектирования
Оформляем результаты проектированияОформляем результаты проектирования
Оформляем результаты проектирования
Turum-burum
 
Арсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторыАрсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторы
Yandex
 
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)
Pavel Novitsky
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
Ivan Nemytchenko
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
Technopark
 

Mais procurados (18)

Индексирование в Magento
Индексирование в MagentoИндексирование в Magento
Индексирование в Magento
 
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDEРазработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
 
Brand-2-Business
Brand-2-BusinessBrand-2-Business
Brand-2-Business
 
DevHub 3 - Pricing
DevHub 3 - PricingDevHub 3 - Pricing
DevHub 3 - Pricing
 
чернобай т., гайдай ю.
чернобай т., гайдай ю.чернобай т., гайдай ю.
чернобай т., гайдай ю.
 
Введение в Django
Введение в DjangoВведение в Django
Введение в Django
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
 
Оформляем результаты проектирования
Оформляем результаты проектированияОформляем результаты проектирования
Оформляем результаты проектирования
 
Арсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторыАрсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторы
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
 
10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)
 
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)
 
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
 
Render API.
Render API.Render API.
Render API.
 
Построение индексов Redis
Построение индексов RedisПостроение индексов Redis
Построение индексов Redis
 
Rambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеров
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 

Semelhante a ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Zend Framework

DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
Viktor Likin
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
ZFConf Conference
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
ZFConf Conference
 
Реализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в MagentoРеализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в Magento
Magecom Ukraine
 
ненавязчивый Java Script алексей сергеев
ненавязчивый Java Script   алексей сергеевненавязчивый Java Script   алексей сергеев
ненавязчивый Java Script алексей сергеев
Media Gorod
 
Zen Coding
Zen CodingZen Coding
Zen Coding
404fest
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf Conference
 
Take more from Jquery
Take more from JqueryTake more from Jquery
Take more from Jquery
Magento Dev
 

Semelhante a ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Zend Framework (20)

Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend Framework
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Yserver
YserverYserver
Yserver
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
 
Реализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в MagentoРеализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в Magento
 
ненавязчивый Java Script алексей сергеев
ненавязчивый Java Script   алексей сергеевненавязчивый Java Script   алексей сергеев
ненавязчивый Java Script алексей сергеев
 
Страх и ненависть в исходном коде
Страх и ненависть в исходном кодеСтрах и ненависть в исходном коде
Страх и ненависть в исходном коде
 
Zen Coding
Zen CodingZen Coding
Zen Coding
 
Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
DSLs в Perl
DSLs в PerlDSLs в Perl
DSLs в Perl
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
 
Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
 
Take more from Jquery
Take more from JqueryTake more from Jquery
Take more from Jquery
 
Perl in practice
Perl in practicePerl in practice
Perl in practice
 
Net 3.0 & Linq
Net 3.0 & LinqNet 3.0 & Linq
Net 3.0 & Linq
 
Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demo
 

Mais de ZFConf Conference

ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf Conference
 
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
ZFConf Conference
 
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf Conference
 
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf Conference
 
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
ZFConf Conference
 
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
ZFConf Conference
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf Conference
 
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf Conference
 
ZFConf 2010: History of e-Shtab.ru
ZFConf 2010: History of e-Shtab.ruZFConf 2010: History of e-Shtab.ru
ZFConf 2010: History of e-Shtab.ru
ZFConf Conference
 
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend FrameworkZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
ZFConf Conference
 
ZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework ApplicationsZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework Applications
ZFConf Conference
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf Conference
 
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf Conference
 

Mais de ZFConf Conference (20)

ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
 
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
 
ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса раз...
ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса раз...ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса раз...
ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса раз...
 
ZFConf 2012: Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL ...
ZFConf 2012: Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL ...ZFConf 2012: Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL ...
ZFConf 2012: Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL ...
 
ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)
ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)
ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)
 
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
 
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
 
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
 
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
 
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
 
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
 
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
 
ZFConf 2010: History of e-Shtab.ru
ZFConf 2010: History of e-Shtab.ruZFConf 2010: History of e-Shtab.ru
ZFConf 2010: History of e-Shtab.ru
 
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend FrameworkZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
 
ZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework ApplicationsZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework Applications
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
 
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
 

ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Zend Framework

  • 1. Интеграция Zend Framework c JavaScript-фрэймворками jQuery и Dojo Toolkit Георгий Туревич , ведущий веб-программист , Wizartech 27 марта 2010 г. Санкт-Петербург
  • 2.
  • 3.
  • 4.
  • 5. ZF + Dojo Toolkit
  • 6. Настройка окружения <style type=&quot;text/css&quot;>     @import &quot;/js/dojo-toolkit/dijit/themes/tundra/tundra.css&quot;; </style> <script type=&quot;text/javascript&quot;>     var djConfig = {&quot;isDebug&quot;:true,&quot;parseOnLoad&quot;:true}; </script> <script type=&quot;text/javascript&quot;      src=&quot;/js/dojo-toolkit/dojo/dojo.js&quot;></script> <script type=&quot;text/javascript&quot;>     dojo.require(&quot;dojo.io.script&quot;);     dojo.require(&quot;dojo.fx&quot;);     dojo.require(&quot;dijit.form.Button&quot;); </script> Типичный код в <head> секции для настройки Dojo :
  • 7. Настройка окружения Настройка с помощью dojo() view- хелпера Во время инициализации: <?=$this -> dojo ()   -> enable ()   -> setDjConfig (array(          'isDebug'  =>  true ,          'parseOnLoad'  =>  true      ))   -> setLocalPath ( '/js/dojo-toolkit/dojo/dojo.js' )   -> addStyleSheetModule ( 'dijit.themes.tundra' )   -> requireModule (array(          'dojo.io.script' ,          'dojo.fx' ,          'dijit.form.Button'      )) ?> Указываем в макете: Zend_Dojo :: enableView ( $view );
  • 8. Настройка окружения Настройка с помощью плагина инициализации ресурса Dojo ( >= 1.10) В макете указываем: <?=$this -> dojo () ?> В application.ini указываем: resources.dojo.djConfig.isDebug = 1 resources.dojo.djConfig.parseOnLoad = 1 resources.dojo.localPath = &quot;/js/dojo-toolkit/dojo/dojo.js&quot; resources.dojo.requireModule[] = &quot;dojo.io.script&quot; resources.dojo.requireModule[] = &quot;dojo.fx&quot; resources.dojo.requireModule[] = &quot;dijit.form.Button&quot;
  • 9.
  • 10.
  • 11. Работа с виджетами View- хелперы В шаблоне: <h1>Форма</h1> <div class=&quot;tundra&quot;>   <form>    <?=$this -> editor ( 'editor' ) ?>    <?=$this -> button (        'send' ,  'Отправить ' ) ?>   </form> </div>
  • 12. Работа с виджетами Элементы форм В контроллере: $form  = new  Zend_Dojo_Form (); $form -> addElement ( 'editor' ,  'editor' ); $form -> addElement (      'button' ,      'send' ,     array( 'label'  =>  'Отправить' ) ); $this -> view -> form  =  $form ; В шаблоне: <h1>Форма</h1> <div class=&quot;tundra&quot;> <?=$this -> form?> </div>
  • 13. Работа с виджетами Элементы форм Состав элементов: - Button - CheckBox - ComboBox / FilteringSelect - CurrencyTextBox - DateTextBox - HorizontalSlider / VerticalSlider - MappedTextBox - NumberSpinner - NumberTextBox - RadioButton - SimpleTextarea - Slider - SubmitButton - TextBox - Textarea - TimeTextBox - ToggleButton - ValidationTextBox
  • 14.
  • 15. Работа с виджетами Виджеты компоновки
  • 16. Работа с виджетами Виджеты компоновки <div class=&quot;tundra&quot;> <? $this -> tabContainer ()-> captureStart ( 'masterLayout' , array(     'style'  =>  'width: 200px; height: 20em;' ))  ?>      <?=$this -> contentPane ( 'menuPane' ,  'This is first tab' , array(          'title'  =>  'tab 1'      )) ?>      <? $this -> contentPane ()-> captureStart ( 'navPane' , array(          'title'  =>  'tab 2' )     ) ?>         This<br>         is<br>         second<br>         tab      <?=$this -> contentPane ()-> captureEnd ( 'navPane' ); ?> <?=$this -> tabContainer ()-> captureEnd ( 'masterLayout' ) ?> </div>
  • 17. Работа с виджетами Виджеты компоновки
  • 18. Работа с виджетами Виджеты компоновки $form  = new  Zend_Dojo_Form (); $subForm1  = new  Zend_Dojo_Form (); $subForm2  = new  Zend_Dojo_Form (); $form -> addSubForm ( $subForm1 ,  'subform1' ); $form -> addSubForm ( $subForm2 ,  'subform2' ); $this -> view -> form  =  $form ; $form -> setDecorators (array(      'FormElements' ,     array( 'TabContainer' , array(          'id'  =>  'myTabs' ,          'style'  =>  'width: 300px; height: 20em'      )),      'Form' , )); - Формируем объекты формы и суб-форм - Устанавливаем форме декоратор TabContainer
  • 19. Работа с виджетами Виджеты компоновки $subForm1 -> setDecorators (array(      'FormElements' ,     array( 'HtmlTag' , array( 'tag'  =>  'dl' )),     array( 'ContentPane' , array( 'title'  =>  'Tab 1' )) )); $subForm2 -> setDecorators (array(      'FormElements' ,     array( 'HtmlTag' , array( 'tag'  =>  'dl' )),     array( 'ContentPane' , array( 'title'  =>  'Tab 2' )) )); - Устанавливаем суб-формам декоратор ContentPane
  • 20. Работа с виджетами Виджеты компоновки $subForm1 -> addElement ( 'Editor' ,  'editor' , array(      ' label '   =>  ' Editor: ' , )); $subForm1 -> addElement ( 'DateTextBox' ,  'date' , array(      ' label '   =>  ' Date: ' ,  'style'  =>  'width: 200px' )); $subForm2 -> addElement ( 'FilteringSelect' ,  'acl' , array(      ' label '   =>  ' City: ' ,  'MultiOptions'  => array(          '1'  =>  'New York' ,  '2'  =>  'Berlin' ,          '3'  =>  'Bern' ,  '4'  =>  'Boston'      ) )); - Добавляем элементы в суб-формы
  • 21. Ajax
  • 22. Ajax В одном действии генерируем форму: public function  dojoDataExampleAction () {      $form  = new  Zend_Dojo_Form ();      $form -> addElement ( 'FilteringSelect' ,  'city' , array(          'label'  =>  'City' ,          'storeId'  =>  'cityStore' ,          'storeType'  =>  'dojo.data.ItemFileReadStore' ,          'storeParams'  => array(              'url'  =>  '/json/simple-city-store/'          ),          'dijitParams'  => array(              'searchAttr'  =>  'name'          )     ));      $this -> view -> form  =  $form ; }
  • 23. Ajax Генерируем JSON классическим методом: public function  simpleCityStoreAction () {      Zend_Controller_Action_HelperBroker :: getStaticHelper ( 'ViewRenderer' ) -> setNoRender ( 1 );      Zend_Layout :: getMvcInstance ()-> disableLayout ();      $data  = array(         array( 'id'  =>  1 ,  'name'  =>  'Волгоград' ),         array( 'id'  =>  2 ,  'name'  =>  'Москва' ),         array( 'id'  =>  3 ,  'name'  =>  'Минск' ),         array( 'id'  =>  4 ,  'name'  =>  'Мурманск' )     );      $dojoData  = new  Zend_Dojo_Data ( 'id' ,  $data );     echo  $dojoData ; }
  • 24. Ajax Генерируем JSON с применением помощника AutoComplete : public function  simpleCityStoreAction () {      $data  = array(         array( 'id'  =>  1 ,  'name'  =>  'Волгоград' ),         array( 'id'  =>  2 ,  'name'  =>  'Москва' ),         array( 'id'  =>  3 ,  'name'  =>  'Минск' ),         array( 'id'  =>  4 ,  'name'  =>  'Мурманск' )     );      $this -> _helper -> autoCompleteDojo ( new  Zend_Dojo_Data ( 'id' ,  $data ),  true ); } Что делает AutoComplete : - автоматически деактивирует Layout и ViewRender - при необходимости трансформирует array -> Zend_Dojo_Data - записывает данные в response- объект и отправляет его пользователю - облегчает жизнь программисту :)
  • 25. Ajax Отдаем данные в формате dojo.data : { &quot;identifier&quot;:&quot;id&quot;, &quot;items&quot;:[ {&quot;id&quot;:1,&quot;name&quot;:&quot;Волгоград&quot;}, {&quot;id&quot;:2,&quot;name&quot;:&quot;Москва&quot;}, {&quot;id&quot;:3,&quot;name&quot;:&quot;Минск&quot;}, {&quot;id&quot;:4,&quot;name&quot;:&quot;Мурманск&quot;} ] }
  • 27.
  • 28.
  • 29. Выпуск в эксплуатацию Zend_Dojo_BuildLayer автоматически генерирует содержание профиля и содержание слоя на основе данных из view- хелпера dojo() . $build  = new  Zend_Dojo_BuildLayer (array(      'view'  =>  $this -> view ,      'layerScriptPath'  =>  'custom.main.js' ,      'layerName'  =>  'custom.main' , )); $profile  =  $build -> generateBuildProfile (); $layerScript  =  $build -> generateLayerScript ();
  • 30. Выпуск в эксплуатацию Слой сборки: dojo.provide(&quot;custom.main&quot;); (function(){ dojo.require(&quot;dojo.io.script&quot;); dojo.require(&quot;dojo.fx&quot;); dojo.require(&quot;dijit.form.Button&quot;); })();
  • 31. Выпуск в эксплуатацию Профиль сборки: dependencies = { action:&quot;release&quot;, optimize:&quot;shrinksafe&quot;, layerOptimize:&quot;shrinksafe&quot;, copyTests:false, loader:&quot;default&quot;, cssOptimize:&quot;comments&quot;, releaseName:&quot;custom&quot;, layers:[{ name:&quot;custom.main.js&quot;, layerDependencies:[], dependencies:[&quot;custom.main&quot;] }], prefixes:[ [&quot;custom&quot;,&quot;../custom&quot;], [&quot;dojo&quot;,&quot;../dojo&quot;], [&quot;dijit&quot;,&quot;../dijit&quot;] ] };
  • 32.
  • 34. Настройка окружения Типичный код в <head> секции для настройки jQuery : <link href=&quot;/jquery/css/ui-lightness/jquery-ui-1.8.custom.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot;> <script type=&quot;text/javascript&quot; src=&quot;/jquery/js/jquery-1.4.2.min.js&quot;></script> <script type=&quot;text/javascript&quot; src=&quot;/jquery/js/jquery-ui-1.8.custom.min.js&quot;></script>
  • 35. Настройка окружения Настройка с помощью jQuery() view- хелпера Во время инициализации: Указываем в макете: $view -> addHelperPath ( &quot;ZendX/JQuery/View/Helper&quot; ,  &quot;ZendX_JQuery_View_Helper &quot; ); $view -> jQuery ()     -> enable ()     -> setLocalPath ( '/jquery/js/jquery-1.4.2.min.js' )     -> addStylesheet ( '/jquery/css/ui-lightness/jquery-ui-1.8.custom.css' )     -> setUiLocalPath ( '/jquery/js/jquery-ui-1.8.custom.min.js' );
  • 36. Настройка окружения Настройка с помощью плагина инициализации ресурса jQuery В макете указываем: <?=$this -> jQuery () ?> В application.ini указываем: pluginPaths.ZendX_Application_Resource_ = &quot;ZendX/Application/Resource&quot; resources.jquery.localpath = &quot;/jquery/js/jquery-1.4.2.min.js&quot; resources.jquery.stylesheet = &quot;/jquery/…/jquery-ui-1.8.custom.css&quot; resources.jquery.uilocalpath = &quot;/jquery/js/jquery-ui-1.8.custom.min.js&quot;
  • 37. Настройка окружения Доступная функциональность jQuery() view- хелпера - Установка и использование cdn- версий jQuery и jQuery UI - Использование ssl с cdn - Установка локальных путей к jQuery и jQuery UI - Добавление javascript- кода для onLoad событий в секции <head> - Добавление javascript- файлов в секци <head> - Добавление javascript- кода в секцию <head> - Добавление файлов стилей
  • 38. Настройка окружения Методы jQuery() view- хелпера setUiVersion() getUiVersion() useUiCdn() useUiLocal() setUiLocalPath() getUiLocalPath() onLoadCaptureStart() onLoadCaptureEnd() javascriptCaptureStart() javascriptCaptureEnd() addJavascriptFile($path) getJavascriptFiles() clearJavascriptFiles() addJavascript($statement) getJavascript() clearJavascript() addStylesheet($path) getStylesheets() addOnLoad($statement) getOnLoadActions() setRenderMode($mask) getRenderMode() setCdnSsl($bool)
  • 39. Работа с виджетами View- хелперы
  • 40. Работа с виджетами View- хелперы
  • 41. Работа с виджетами Элементы форм $form  = new  ZendX_JQuery_Form (); $subForm1  = new  ZendX_JQuery_Form (); $subForm2  = new  ZendX_JQuery_Form (); $form -> addSubForm ( $subForm1 ,  'subform1' ); $form -> addSubForm ( $subForm2 ,  'subform2' ); $form -> setDecorators (array(      'FormElements' , array( 'TabContainer' , array(          'id'  =>  'tabContainer' ,  'style'  =>  'width: 600px;'      )),      'Form' , )); - Формируем объекты формы и суб-форм - Устанавливаем форме декоратор TabContainer
  • 42. Работа с виджетами Элементы форм $subForm1 -> setDecorators (array(      'FormElements' , array( 'HtmlTag' , array( 'tag'  =>  'dl' )),     array( 'TabPane' , array( 'jQueryParams'  => array(          'containerId'  =>  'mainForm' ,  'title'  =>  'DatePicker'      ))) )); $subForm2 -> setDecorators (array(      'FormElements' ,     array( 'HtmlTag' , array( 'tag'  =>  'dl' )),     array( 'TabPane' , array( 'jQueryParams'  => array(          'containerId'  =>  'mainForm' ,          'title'  =>  'AutoComplete and Slider'      ))) )); - Устанавливаем суб-формам декоратор TabPane
  • 43. Работа с виджетами Элементы форм $subForm1 -> addElement ( 'DatePicker' ,  'datePicker1' , array(      &quot;label&quot;  =>  &quot;Date Picker:&quot; ,      'JQueryParam'  => array( 'dateFormat'  =>  'dd.mm.yy' ) )); $subForm2 -> addElement ( 'Slider' ,  'slider1' , array(      &quot;label&quot;  =>  &quot;Slider:&quot; ,      'JQueryParams'  => array( 'defaultValue'  =>  '75' ) )); $subForm2 -> addElement ( 'AutoComplete' ,  'acl' , array(      &quot;label&quot;  =>  &quot;Autocomplete:&quot; ,  'JQueryParams'  => array(          'source'  => array(              'New York' ,  'Berlin' ,  'Bern' ,  'Boston'          )     ) )); - Добавляем элементы в суб-формы
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.