Что выполняет метод getUserStateFromRequest( ); ?

Тема в разделе "Создание расширений для Joomla", создана пользователем Kravcneger, 23.06.2010.

  1. Offline

    Kravcneger Недавно здесь

    Регистрация:
    29.10.2009
    Сообщения:
    28
    Симпатии:
    0
    Пол:
    Мужской
    $mainframe->getUserStateFromRequest( $context.'filter_order', 'filter_order', 'name', 'cmd' );

    Из информации в интернете
    "функция которая запоминает параметры пользователя на странице в админ части. Например при разбивке списка статей на страницы при поиске - можно запомнить ключевое поисковое слово или значение по сколько выдавать результатов на страницу."

    Так вот мне не понятно что означает первый парраметр? Второй название переменной в запросе , 3 ий значение по умолчанию , 4 ый тый тип значения.

    Посмотрел стандартные расширения joomla (com_banner), там для получение переменной из запроса , которая указывает по какому полю производить сортировку указывается так

    $context = 'com_banners.banner.list.';
    $filter_order = $mainframe->getUserStateFromRequest( $context.'filter_order', 'filter_order', 'cc.title', 'cmd' );
    $filter_order_Dir = $mainframe->getUserStateFromRequest( $context.'filter_order_Dir', 'filter_order_Dir', '', 'word' );


    есть и такие варианты где $context = 'global.list.';

    Что это означает Документация по фреймворку ответа не даёт:'(
    Может быть вы поможете уважаемые специалисты.
    Спасибо.

    p.s в этом же компоненте в контроллере для работы с Клиентами. указано так

    $context = 'com_banners.bannerclient.list.';
    $filter_order = $mainframe->getUserStateFromRequest( $context.'filter_order', 'filter_order', 'a.name', 'cmd' );


    bannerclient - с таким названием не существует ни одного класса компонента , не среди отображений не среди контроллеров. С таким название нету ни одного поля на странице НЕТУ НИЧЕГО. что же эта запись через точечную нотацию может означать ?
     
  2.  
  3. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 094
    Симпатии:
    158
    Пол:
    Мужской
    Kravcneger, com_banners.bannerclient.list - это список клиентов в компоненте баннеров. Есть там такой параметр, соответственно он тут и указан
     
  4. panas
    Offline

    panas Недавно здесь

    Регистрация:
    22.08.2009
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Попробую объяснить, что это за метод и что значат его аргументы.
    Метод getUserStateFromRequest( ); относится к объекту JApplication, он позволяет запоминать необходимые параметры отображения всех компонентов в пределах сессии. Он работает при помощи 2-х методов этого же объекта. Методы getUserState($key); и setUserState($key, $new_state);.
    Код (PHP):
    1. function getUserStateFromRequest( $key, $request, $default = null, $type = 'none' )
    2. {
    3.         $old_state = $this->getUserState( $key );
    4.         $cur_state = (!is_null($old_state)) ? $old_state : $default;
    5.         $new_state = JRequest::getVar($request, null, 'default', $type);
    6.  
    7.         // Save the new value only if it was set in this request
    8.         if ($new_state !== null) {
    9.                 $this->setUserState($key, $new_state);
    10.         } else {
    11.                 $new_state = $cur_state;
    12.         }
    13.  
    14.         return $new_state;
    15. }


    Из приведенного кода выше видно, что первый аргумент, о котором вы спрашивали, не зависит от полей или классов. Он назначается, если не был определен, и запоминает нужное значание. Далее он используется в качестве ключа для получения необходимого значения.

    Вот таким образом вы можете посмотреть, в каком виде хранятся эти ключи и их значения. Вызовите данный код где-то в модели.
    Код (PHP):
    1. $session = JFactory::getSession();
    2. echo "<pre>";
    3. print_r($session->get('registry')->_registry);


    Ссылки по теме:
    http://docs.joomla.org/API15:JApplication
    http://docs.joomla.org/API15:JRegistry
     
    Последнее редактирование: 28.06.2010

Поделиться этой страницей

Загрузка...