Joomla! 3: Персонализирано събитие за приставка onUserBeforeSave валидиране

Създадох персонализиран плъгин за проверка на промяната на потребителския профил. Имам странен проблем със събитието onUserBeforeSave.

За да направя примера възможно най-прост, съкращавам кода

public function onUserBeforeSave($user, $isnew, $new)
{
  JError::raiseWarning(1000, 'Save disabled');      
  return false;
}

Така че връщам false при всяка промяна на потребителските данни. Всичко работи добре, joomla извежда грешка и се връща към редактирането на профила, но данните се записват в базата данни.

Има ли някаква възможност това да работи или някой е имал различен опит?

Предварително благодаря!

РЕДАКТИРАНЕ: Добре, променям мнението си, записва се в потребителска сесия или в кеша, защото когато се върна обратно към профила след неуспешно запазване, виждам, че съм променил данните, но след повторно влизане (излизане, влизане) данните не са променен. Как да се отървете от това, може да обърка потребителите.


person scorpion909    schedule 18.11.2013    source източник


Отговори (1)


Унищожаване на сесията:

$session = JFactory::getSession();
$session->destroy();

Между другото, Jerror е отхвърлен от 11.1. Вместо това трябва да използвате Exception:

throw new Exception('Save disabled', 1000);

Дано помогне

person McRui    schedule 18.11.2013
comment
Благодаря за отговора, но това всъщност принуждава потребителя да излезе. Мисля, че трябва да направя някакъв вид опресняване на потребителската сесия. - person scorpion909; 18.11.2013
comment
Можете да използвате други методи на JSession вместо унищожаване. Ако знаете параметъра за изчистване, можете да използвате $session-›clear($param_name); метод - person McRui; 18.11.2013