我的 Page_Controller 的 init() 函数中有以下内容:
if ($this->ClassName != 'Trail' && $this->ClassName != 'Ride'){
Session::clear('RelatedTrails');
} elseif ($this->ClassName == 'Ride') {
Session::clear('RelatedTrails');
Session::set('RelatedTrails', $this->getTrails());
}
骑行等级:
function getTrails() {
return $this->Trails();
}
static $many_many = array(
'Trails' => 'Trail'
);
步道班
class Trail extends Page {
.....
static $belongs_many_many = array(
'Rides' => 'Ride',
);
....
}
这会在用户点击骑行页面时设置会话。只有当他们直接从骑行页面转到跟踪页面时,我才需要在跟踪页面上提供此会话信息。
它给我的问题是,当我点击“骑行”课程页面时,没有设置会话。当我从 if 语句的第一部分注释掉 Session::clear 时,会话设置正确,但是我需要它在任何其他页面类型上清除。
我尝试在第一部分放置一个回声和一个骰子,看看它是否落入这里,但它从未被击中。这是非常奇怪的行为。谁能看到这里发生了什么?
更新:进一步解释:我有游乐设施和小径。一次骑行可以包含许多路径。在骑行页面上,有一个菜单允许用户点击进入与骑行相关的路径。当他们从骑行点击进入小径时,会出现一个菜单,其中显示与他们刚刚点击过的骑行相关的其他小径。菜单的轨迹存储在骑行页面上设置的会话中。当他们通过菜单导航其他路径时,我需要保留此会话,以便我可以继续显示这些相关路径。
如果用户直接链接到跟踪页面(而不是通过骑行)。我需要知道这一点,以便我可以显示所有路径,因为我没有任何关联的路径。