У меня было подобное желание. Я хотел, чтобы страница отображалась только в том случае, если пользователи вошли в систему и заполнили страницу ввода заказа.
Что я решил сделать, это проверить, есть ли данные в POST.
контроллер/place_order.php (snipet)
public function submitOrder()
{
$post = JRequest::get('post');
$model = $this->getModel();
if($post != null && $post != ''){
if($model->placeOrder()){
}
}
JRequest::setVar('layout', 'submitOrder');
parent::display();
}
Это предотвращает задачу от выполнения моей placeOder функции ничего в модели. Затем я просто добавляю что-то похожее на страницу отправки заявки. В вашем случае «перенаправить».
вид/place_order/TMPL/submitOrder.php (snipet)
defined('_JEXEC') or die('Restricted access');
$user =& JFactory::getUser();
if ($user->guest) {
echo "<p>You must login to access this page.</p>";
}
else if($_POST == "" || $_POST == null){
echo "<p>You can not directly access this page.</p>";
}else {
//Your order was submitted successfully HTML (don't forget to close it at the bottom ;)
Есть много способов, вы можете сделать это ... вы, вероятно, даже не нужно проверить в случае, если Вы контроллер не хочу, но я делаю, чтобы сэкономить вовремя. Если вы не видите свой код, сложно адаптировать ответ, но если вы поймете концепцию здесь, это должно помочь (я надеюсь ...).
Вы также можете проверить эту страницу из Joomla on authorization and privileges.
На самом деле страница защищена от гостевых пользователей, но если у вас возникли вопросы по типам пользователей, которые перенаправляют его на эту страницу, и, следовательно, опция оплаты будет пропущена. Я хочу, чтобы пользователь сначала заплатил сумму, а затем перенаправил ее на эту страницу –