При входе в компонент, пропадает аутентификация.

Тема в разделе "Программирование", создана пользователем dkoldyaev, 28.09.2010.

  1. Offline

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

    Регистрация:
    25.05.2010
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Ситуация: я написал несложный компонент: на странице выводится форма, пользователь ее заполняет и отправляет POST'ом. Компонент роется в БД и выводит результаты поиска в view. Все нормально и хорошо работает.

    В шаблоне присутствует следующий кусок кода:

    Код (PHP):
    1. <?php $user = &JFactory::getUser(); ?>
    2. <?php if ($user->guest == 0) : ?>
    3.       <p>Добро пожаловать, <a href="<?php echo JRoute::_('index.php?option=com_comprofiler'); ?>"><?php echo $user->name; ?></a>. <a href="#" id="logoutLink">Выйти</a></p>
    4. <?php else : ?>
    5.       <p><a href="#k2ModuleBox61" id="showLoginLink">Войти</a> на сайт или <a href="<?php echo JRoute::_('index.php?option=com_comprofiler&task=registers'); ?>">зарегистрироваться</a>.</p>
    6. <?php endif; ?>


    Дак вот. При входе в компонент и на всех остальных страницах сайта, в шаблоне нормально отображается $user (если залогинен), с правильными данными, все хорошо… А после отправки формы, $user в шаблоне чем-то затирается и var_dump($user); выдает следующее:
    Код (PHP):
    1. object(JUser)#144 (19) { ["id"]=>  int(0) ["name"]=>  NULL ["username"]=>  NULL ["email"]=>  NULL ["password"]=>  NULL ["password_clear"]=>  string(0)
    и так далее…

    Возможно проблема в том, что в компоненте, при отправке формы, я получаю пользователя аналогичным образом (во вспомогательном классе контроллера):

    Код (PHP):
    1. class searchOptions {
    2.     public $user_id;
    3.    
    4.     public function __construct($task){
    5.         $this->user_id = &JFactory::getUser();
    6.         $this->user_id = $this->user_id->id;


    Причем в компоненте получаются верные параметры пользователя.

    Я не понимаю что делать. Вроде как и в шаблоне, и в компоненте я должен использовать один объект (в обоих случаях я получаю его по указателю &). Как быть?
     
  2.  
  3. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Когда вы отправляете форму, ядро джумлы вызывает передает управление вашему компоненту и все начинается с начала controller - model - view - tmpl . Если вы используете несколько моделей то статик метод getUser(), Вам необходимо вызвать в каждой из них, а затем передавать данные в шаблон.
     

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

Загрузка...