私も似たような欲求がありました。ユーザーがログインしていて、注文入力ページに入力した場合にのみページを表示したかったのです。
私がやろうと決めたのは、POST にデータがあるかどうかを確認することでした。
controller/place_order.php (スニペット)
public function submitOrder()
{
$post = JRequest::get('post');
$model = $this->getModel();
if($post != null && $post != ''){
if($model->placeOrder()){
}
}
JRequest::setVar('layout', 'submitOrder');
parent::display();
}
これにより、タスクがモデル内の placeOder 関数を実行できなくなります。次に、注文の送信ページに似たものを追加します。あなたの場合は「リダイレクト」します。
view/place_order/tmpl/submitOrder.php (スニペット)
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 のこのページも参照してください。