ユーザー登録コンポーネントを指すメニューがいくつかあります。ユーザーが登録する場所に応じて、カスタム プラグインを使用してリダイレクトします。
public function onUserAfterSave($user, $isnew, $success, $msg)
{
//get the active menu item id so we can compare what plan we are on
$menu = $app->getMenu();
$active = $menu->getActive();
$activeId = $active->id;
//compare active page (i.e. what menu item are we on) with the parameter set in the plugin
//if it matches redirect accordingly - fallback is to always redirect to free plan
if ($activeId == $this->params->get('free-reg-menu'))
{
//redirect required to go to main page
JFactory::getApplication()->redirect(JRoute::_('page1'));
}
else if ($activeId == $this->params->get('bv-reg-menu'))
{
//redirect to step 2 of main plan payment processing
JFactory::getApplication()->redirect(JRoute::_('page2'));
}
else if ($activeId == $this->params->get('prem-reg-menu'))
{
//redirect to step 2 of value plan payment processing
JFactory::getApplication()->redirect(JRoute::_('page3'));
}
else
{
//other stuff
}
}
このプラグインで割り当てられたメニューに応じて、ユーザーを特定のページにリダイレクトします。これはすべて非常にうまく機能します。
私の問題は、登録が失敗した場合(つまり、ユーザー名の重複、一致するパスワードの誤りなど)、サーバー側の検証によりページが更新されることです。この更新により、ページは元のリンクから離れます。最初に作成した登録メニュー ページにリダイレクトされるようです。
例: 登録ページで間違った資格情報を入力すると、ページがまったく別のページに更新されます。何か案は?AJAX 登録の拡張機能がこれに対処する可能性があると思いますが、今のところは避けたいと思います。