ModX:同一页面上的2个片段相互交互

时间:2012-09-21 07:18:07

标签: php variables code-snippets modx modx-revolution

我有2个片段(下方)。问题是,即使变量不为null,第二个代码段中的if statemnt if ($loggedin != NULL){也不会通过。它就像第一个片段中的$loggedin变量不适用于它。如果我将2个片段合并为1,它们就能正常工作。

有谁知道如何让2个片段“互相交谈”? (ps,运行Revo 2.1.3)

<?php
$loggedin = "";
if (!isset($_SESSION['user_id'])) {
 // redirect to login page
}
else {
$loggedin = "true";
}

第二

<?php
if ($loggedin != NULL){
echo  "logged in";
}
else {
echo  "error";
}

1 个答案:

答案 0 :(得分:1)

首先,您没有将$ loggedin变量传递给第二个片段,通常使用post或session变量执行此操作。

其次,有一种更容易检查的方法,这些都是Bob的指南。:

There are various methods. One easy method is to use this code:

if ($modx->user->get('username') == '(anonymous)') {
    /* user is not logged in */
}    
Here is the official method for seeing if the user is logged in 
to the current context:

if ($modx->user->hasSessionContext($modx->context->get('key'))) {
    /* user is logged in */
}    
If you know the name of the current context (e.g., web), 
you can use this method. The name of the context is required:

if $modx->user->isAuthenticated('web') {
    /* user is logged in to web context */
}  

如果由于某种原因需要滚动自己的身份验证。 〜否则,登录/注册额外将为您完成所有这些。

* UPDATE *** 在您可以设置/获取占位符的同一资源中,从一个代码段到另一个代码段的两个传递变量:

<?php
// snippet one

$modx->setPlaceholder('output','Place holder set!');



<?php
// snippet two

$myvar = $modx->getPlaceholder('output');

echo 'this is the value of "output": '.$myvar;