Инструменты пользователя

Инструменты сайта


eaze:samples:пишем_сайты_в_два_экшена

Пишем сайты в два экшена

by shuler

Я написал два экшена, которые запарился писать каждый раз в новом проекте. Под проектом понимается как-нибудь простенький сайт.

  • GetObjectList.php — получение списка объектов по опредленным условиям.
  • GetObjectItem.php — получение одного объекта по условиям.

Примеры

Пример №1. Нужно получить 2 последние новости на главной странице

<action name="GetLastNews"><path>GetObjectList</path>
     <parameters>
        <request>
             <param name="gol_UsePages">"false"</param>
             <param name="gol_Class">"News"</param>
             <param name="gol_Objects">"news"</param>
             <param name="gol_PageSize">2</param>
        </request>
    </parameters>
</action>

Пример №2. Нужно сделать постраничный вывод новостей с обработкой номера страницы

<action name="GetNews">
     <path>GetObjectList</path>
     <parameters>
        <request>
             <param name="gol_UsePages">"true"</param>
             <param name="gol_Class">"News"</param>
             <param name="gol_Objects">"news"</param>
             <param name="gol_PageSize">5</param>
        </request>
    </parameters>
    <redirects>
        <redirect name="outOfRange" path="/news/" />
    </redirects>
</action>

Пример №3. Получить новость по ее Id в урле. Помимо новости — все ее листы. Сделать редирект, если новости нет

<action name="GetNewsItem">
     <path>GetObjectItem</path>
     <parameters>
        <request>
             <param name="goi_Search">array('newsId' => Page::$RequestData[1])</param>
             <param name="goi_Options">array(OPTION_WITH_LISTS => true)</param>
             <param name="goi_Class">"News"</param>
             <param name="goi_Object">"newsItem"</param>
        </request>
    </parameters>
    <redirects>
        <redirect name="empty" path="/news/" />
    </redirects>
</action>

GetObjectList

Описание параметров

  • gol_Search — массив поиска, который подставляется в Factory::Get().
    • В этом массиве не нужно указывать параметры «page» и «pageSize», они будут описаны ниже.
    • В этом массиве можно получить доступ к данным урла. Пример:
      array('url' => Page::$RequestData[0])
    • В этом массиве можно получить доступ к данным классов Request, Response и Session. Пример:
      array('statusId' => Request::getString('statusId'))
  • gol_Options — массив опций, который подставляется в Factory::Get().
    • В этом массиве не нужно указывать значение для опции OPTION_WITHOUT_PAGES, она управляется автоматически. Пример:
      array(OPTION_WITH_LISTS => true)
  • gol_UsePages — задает режим работы экшена. Если задано «true», то выборка будет осуществляться постранично с учетом размера страницы.
  • gol_PageSize — кол-во объектов на одну страницу. Параметр может использоваться для любых значений параметра gol_UsePages.
  • gol_Class — название класса объекта. Если вы хотите использовать NewsFatory, надо поставить значение 'News';
  • gol_Objects — имя переменной для полученных данных в шаблоне

Описание редиректов

  • outOfRange — редирект для случая, когда экшену передана недоступная для выборки страница.

Описание возвращаемых данных (только в случае значения gol_UsePages = «true»)

  • __pageNumber — номер текущей страницы
  • __pageCount — кол-во возможных страниц для заданных параметров
  • __objectsCount — кол-во объектов для заданных параметров

GetObjectItem

Описание параметров

  • goi_Search — аналогично gol_Search
  • goi_Options — аналогично gol_Options
  • goi_Class — аналогично gol_Class
  • goi_Object — аналогично gol_Objects

Описание редиректов

  • empty — редирект для случая, когда объект не найден.

Общие замечания

  1. Редиректы описывать необязательно. При его отсутствии в параметрах action просто ничего не вернет.
  2. Строковые параметры надо передавать в кавычках.
  3. Обязательными параметрами для GetObjectItem являются goi_Class и goi_Object.
  4. Обязательными параметрами для GetObjectList являются gol_Class и gol_Objects.
  5. При выставленном gol_UsePages «true» параметр gol_PageSize обязателен.
eaze/samples/пишем_сайты_в_два_экшена.txt · Последние изменения: 2011/09/12 17:23 — sergeyfast