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

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


eaze:panda:создание_fe

Это старая версия документа.


Создание FE

Принципы создания FE

Перенаправления

Перенаправления реализуются с помощью actions.xml и возврата строки из метода Execute(). Например, нам нужно из Action перейти на страницу новости.

  1. У <action> добавляем:
    <redirects>
        <redirect name="success" path="/news/{newsId}/ " />
    </redirects>
  2. В Execute() пишем:
    Response::setInteger( 'news', 1 );
    return "success";

    У одного action может быть сразу несколько <redirect>.

Работа с объектами

Вся работа с базой осуществляется через Factory. У Factory есть набор стандартных методов. Рассмотрим примеры:

  • NewsFactory::GetById( $newsId ) – получить новость по Id.
  • NewsFactory::GetCurrentId() – получить последний Id новости (select max).
  • NewsFactory::Add( $news ) – добавить новость.
  • NewsFactory::Update( $news ) – обновить новость.
  • NewsFactory::Validate( $news ) – проверить новость.
  • NewsFactory::GetFromRequest( $prefix ) - получить новость из $_REQUEST (см. BaseSaveAction, getFromRequest и data.tmpl.php).
  • NewsFactory::Get( array( “categoryId” ⇒ 2), array( OPTION_WITHOUT_PAGES ⇒ true ) ) – получить все новости для категории с Id 2.

Работа с url

В описании url можно использовать регулярные выражения:

<page url="/news/([a-z]+)/([0-9]+)/">

Существует массив Page::$RequestData. Нулевой элемент массива – полный url, следующие индексы – значения групп регулярных выражений.

Размещение actions

Все actions, которые отвечают за FE, находятся в пакете <Project>.Site (см. Panda.Site.xml).

Обычно для получения списков используются один и тот же action с разными настройками. Например – GetLastNews и GetNews – это один и тот же action с разными настройками (GetLastNews):

<parameters>
    <request>
        <param name="gn_WithoutPages">true</param>
        <param name="gn_Count">5</param>
    </request>
</parameters>

Где префикс gn – это первые буквы GetNews (основного action).

Стандартные названия actions:

  • GetNews
  • GetNewsDetails
  • SaveNews
  • SaveComment
  • ManageNews (например, сюда можно запихнуть голосование и оставление комментария)
  • Do*, Manage* и т.д.

Шаблоны

Общие элементы, обычно, находятся в папке tmpl://fe/elements/. Например – paginator.tmpl.php, или breadcrumbs.tmpl.php.

Пагинатор можно найти в VT (не забывайте посмотреть, как работает BaseGetAction).

Список страниц

  1. / – главная страница со списком последних 5 новостей. (actions = GetLastNews ).
    1. Общие элементы
      1. Список категорий
      2. Кнопка «добавить новость»
      3. Хлебные крошки (включая ссылку на главную)
  2. /news/ – список всех новостей с постраничным выводом.
    1. Категория, Заголовок, Преамбула, Дата публикации
  3. /news/(category-alias)/ - список новостей с постраничным выводом для конкретной категории.
    1. По сути своей, пункт 3 это часть пункта 2. Их лучше объединить в один.
    2. Заголовок, Преамбула, Дата публикации
  4. /news/(newsId)/ - страница новости с древовидными комментариями (без постраничного вывода).
    1. Вся нужная информация о новости.
  5. /news/add – страница добавления новости. На этой странице будет отображена форма добавления новости. После успешного добавления – перенаправление на страницу новости.

Задача

Создать полностью работающий FE без css, используя стандартные html-теги (p,br,a, h1-3, li,ul и .т.д.). Должно работать:

  • Просмотр новостей.
  • Создание новости.
  • Просмотр комментариев.
  • Добавление комментариев.
  • Голосование за новость (не более 3 раз в день с одного IP).

Правила проверки

  1. На всех страницах
    1. Хлебные крошки
    2. Категории
    3. Добавить новость
    4. Все новости
  2. Все ссылки должны работать.
  3. Проверка пользовательского ввода
    1. Теги в новостях (xss)
    2. Теги в комментариях(xss)
  4. Неправильные значения
    1. Номер страницы (negative, out of range)
    2. Alias категории (not found)
    3. Id новости (not found)
  5. Комментарии
    1. Id родительского комментария (not found,зацикливание дерева)
    2. Id новости (not found, empty)
    3. Email (empty, format, max)
    4. Comment (empty, max)
    5. Author (empty, format, max)
  6. Создание новости
    1. Категория
    2. Название
    3. Преамбула
    4. Текст
    5. Автор
    6. Email
    7. Картинка
    8. Редирект после создания
eaze/panda/создание_fe.1315824919.txt.gz · Последние изменения: 2011/09/12 14:55 — sergeyfast