在Session中检索最后一项::

时间:2014-10-14 11:49:44

标签: php session laravel laravel-4 blade

我想知道如何在名为smartBacklinks的会话中检索最后一个实例。

以下是代码

if(Session::has('smartBacklinks'))
{
    // if(Request::header('referer') === LAST ITEM IN SESSION[smartBacklinks] ARRAY)
    Session::push('smartBacklinks', Request::header('referer'));
}
else
{
    Session::put('smartBacklinks', [Request::header('referer')]);
}

另外,我如何从刀片模板中检索这个?

2 个答案:

答案 0 :(得分:0)

您可以根据以下关键字从会话中检索“smartBacklinks”:

$value = Session::get('smartBacklinks');

此外,您可能需要注意,您使用Session::push()来推送数组会话值,并使用Session::put()只是将项目存储在会话中。

从刀片中检索值:

我猜你可以将刚刚检索到的变量传递给控制器​​,如下所示:

return View::make('foo.bar', array('smartBacklinks' => $value));

然后在刀片中使用它:

<a href="{{ URL::to($smartBacklinks) }}" class="btn btn-mini btn-primary">Go back</a>

希望有所帮助。

答案 1 :(得分:0)

我编辑了很多代码,它现在正在运行。我仍然需要添加一些调整,以使其在我需要时表现100%

代码现在看起来像这样:

if(Session::has('smartBacklinks')){
    // Get the last item in Session array 
    $slice = array_slice(Session::get('smartBacklinks'), -1, 1);

    // Check if Request::header('referer') is equal to the $slide[0]
    if(Request::header('referer') != $slice[0]){
        // Check if Request::header('referer') is empty
        if(Request::header('referer') != '') Session::push('smartBacklinks', Request::header('referer'));
    }
    // If session[smartBacklinks] is not set. - Set
    }else {
        Session::put('smartBacklinks', [Request::header('referer')]);

        $slice = array_slice(Session::get('smartBacklinks'), -1, 1);
    }

Session::save();

然后当然会话数组的最后一个实例是

$slice[0]

我需要补充的最后一件事是:

  • 单击“后退按钮”时,应删除会话数组的最后一个实例,并且不应将URL推送到会话中
  • 我需要确保会话已正确加载,因此我无需刷新网页以获取正确的“返回网址”

感谢您的回答!