1

カスタムコンポーネントがあります。今のところ、誰もがこのコンポーネントを使用してページにアクセスできます。ログインしていないユーザーをログインページにリダイレクトしたいのですが、ログインページのURLを取得するにはどうすればよいですか?

私のコンポーネントビューでは、次のように書いています。

if($user->id != 0) {
    ..
}
else {
    $link = JRoute::_(???????);
    $this->setRedirect($link);  
}

別の質問 - 表示しても問題ありませんか、それとも他の場所に配置する必要がありますか? Joomla 2.5 を使用しています。

4

3 に答える 3

2

これを試して 、

そのコンポーネント ビューでは、ログインしているユーザーのみを制限する必要があります。

$user = JFactory::getUser();
if($user->id != 0){

 // show your view
}
else{

$mainframe = JFactory::getApplication();
$mainframe->redirect('index.php?option=com_users&view=login');
}

このコードは、view.html.php、レイアウトなどのどこでも使用できます。

于 2013-07-15T04:06:53.890 に答える
0

これはコントローラーに配置するのが理想的ですが、ビューでもほとんど同じことができます。

まず、リターン リンクをエンコードします。

$link = base64_encode(JRoute::_("index.php?option=com_yourcomponent&view=someview&tmpl=somelayout", false));

次に、ログイン ページへのルートを作成します。

$rlink = JRoute::_("index.php?option=com_users&view=login&return=$link", false);
$msg = JText::_("COM_YOURCOMPONENT_LOGIN_TO_ACCESS");
$app = JFactory::getApplication();
$app->redirect($rlink, $msg);
于 2013-07-15T08:08:23.840 に答える
0

指定しないので、Joomla 2.5.x と推測します。

あなたのビューでは、クラスは標準的な場所のようです...たとえば、次のようにファイルを com_contentチェックインします。article/view.html.php

// Check the view access to the article (the model has already computed the values).
if ($item->params->get('access-view') != true && (($item->params->get('show_noauth') != true &&  $user->get('guest') ))) {
    JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR'));

    return;
}

ご覧のとおりcom_content、ユーザーはリダイレクトされず、ブロック警告メッセージが表示されるだけです。

com_usersredirectログイン後にユーザーに送信する URL を含むパラメーターを使用して呼び出すことができます。パラメータは でbase64エンコードおよびエスケープする必要がありますurlendcodedocs.joomla.orgで、ログイン後のリダイレクトメカニズムについて読むことができます。

ログインへのリダイレクトを実現し、ログインが成功した後に元のリクエストに戻るには、elseブロックで次のようなものを使用できます。

// Redirect to login
$uri        = JFactory::getURI();
$return     = $uri->toString();

$url  = 'index.php?option=com_users&view=login&return=' . urlencode(base64_encode($return));

$jAp->redirect($url, JText::_('Message_about_this_view_requiring_login'));
于 2013-07-15T00:30:51.837 に答える