У меня есть следующее в функции init() моего Page_Controller:
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',
);
....
}
Это устанавливает сеанс, когда пользователь переходит на страницу поездки. Мне нужно сделать информацию об этом сеансе доступной на странице маршрута ТОЛЬКО тогда, когда они переходят непосредственно со страницы маршрута на страницу маршрута.
Это вызывает у меня проблемы в том, что когда я нажимаю на страницу класса «Поездка», сеанс не устанавливается. Когда я комментирую Session::clear из первой части оператора if, сеанс устанавливается правильно, однако мне нужно, чтобы он очищался на любом другом типе страницы.
Я пытался поставить эхо и кубик в первой части, чтобы увидеть, попадает ли он сюда, но он никогда не попадал. Это очень странное поведение. Кто-нибудь может увидеть, что здесь происходит?
ОБНОВЛЕНИЕ: Чтобы объяснить дальше: у меня есть аттракционы и тропы. Поездка может содержать множество маршрутов. На странице поездки есть меню, которое позволяет пользователю переходить по маршрутам, связанным с поездкой. Когда они переходят от поездки к тропе, появляется меню, в котором отображаются другие маршруты, связанные с поездкой, которую они только что перешли. Трассы для меню сохраняются в сеансе, установленном на странице поездки. Мне нужно сохранить этот сеанс, поскольку они перемещаются по другим тропам через меню, чтобы я мог продолжать показывать эти связанные тропы.
Если пользователь напрямую переходит на страницу следа (не через поездку). Мне нужно знать это, чтобы я мог просто показать ВСЕ следы, поскольку у меня нет связанных следов.