在Laravel 5.1中如何检查会话密钥是否存在?

17

我正在尝试检查控制器中是否已经设置了会话密钥。文档表明,可以检查数组中是否存在项目,仅此而已。

http://laravel.com/docs/5.1/session


10
你能不能只写 if (Session::has('your_key')) - DavidDomain
9个回答

25

你可以使用

if($request->session()->has('key'))
{
}

1
代码不足以说明问题,请进行解释。 - Patryk
在 Laravel 5 或更高版本中,语法已经发生了变化,因此您需要编写类似以下的代码来检查会话是否存在。请阅读 Laravel 5.2 的会话文档,以便更好地理解相关概念。 - Tariqul Islam

16

正如在问题评论中@DavidDomain所指出的那样,最好的做法可能是使用

if(Session::has('...'))

11

您可以在Blade模板和控制器中使用Session::has('YOUR_SESSION_KEY')

例如在控制器中:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Session;

class add_classController extends Controller
{
  public function index(){
    if (Session::has('YOUR_SESSION_KEY')){
      // do some thing if the key is exist
    }else{
      //the key does not exist in the session
    }

  }
}

blade示例:

@if (Session::has('YOUR_SESSION_KEY'))
{{-- do something with session key --}}
@else
{{-- session key dosen't exist  --}}
@endif

3
您可以这样做。
if(Session::has('your_key')){
        return $next($request);
    }

2

这对我来说可行

@if (session()->has('hasCoupon'))
    [{{ Session::get('hasCoupon')['name'] }}]</span>
@endif

2
if($request->session()->exists('your_key'){
// 
}

尽管这段代码片段可能回答了问题,但包括解释为什么以及如何帮助解决问题可以提高您的答案质量和持久性。请参阅如何撰写好答案? - ammportal

1
或者更简短,不使用会话外观模式:if(session()->exists('key_here'))

0

尝试使用这个新的 Laravel 语法

 @if(session()->has('success'))
  //rest of code here
 @endif

0
@if ( session::has('message') 

{{ session::get('message') }}
@endif

或者

@if (session->has->('message'))

{{session->

@endif

欢迎来到SO!由于这个准确的答案已经被给出,并且问题已经有6年的历史了,重复的答案并没有太大贡献。也许您可以看看没有答案的较新问题,提供您的帮助? - Eric Landheer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接