【问题标题】:Check if session exists inside blade template - Laravel检查刀片模板中是否存在会话 - Laravel
【发布时间】:2016-04-02 13:40:27
【问题描述】:

目前我的一个香草php 文件中有以下代码

<?php 

if (isset($_SESSION['qwick'])) {
    include "checkout-lin.php";
} else {
    include "checkout-nlin.php";
}

?>

我怎样才能在 laravel 中做同样的事情。我在 includes 文件夹中创建了 2 个文件,分别命名为 loggedinclude.blade.phpnotloggedinclude.blade,现在我想将它们添加到页面 checkstatus.blade.php

我也可以像这样设置会话

$vars = [
    "email" => $email,
    "password" => $password,
    "firstname" => $row['firstName'],
    "lastname" => $row['lastName'],
    "id" => $row['id']
];

session()->put('blog', $vars);

从上面的代码中,我创建了一个数组,然后将该数组放入一个名为 blog 的会话中,从而设置一个名为 blog 的会话。现在我希望能够检查是否设置了名为 blog 的会话。然后博客有可变电子邮件等

仅供参考;

我的第一个问题是检查刀片中是否存在会话

我的第二个问题是检查控制器中是否存在命名会话

文档只有检查session项目的代码

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

【问题讨论】:

  • 根据您的代码,未声明 qwick 会话。请将其添加到 $vars。也请参考我对您的问题的回答!
  • 第一块代码不在我的blade 文件中。那是我的旧代码,检查会话块blog
  • 我只看到电子邮件、密码、名字、姓氏、id 会话变量
  • qwick 不是会话变量。 qwick 是会话名称。就像我的网站有 3 个部分 webblogcareers,用户可以登录所有 3 个部分,这意味着用户有 3 个独立会话
  • 这是我的错。我的意思是会话名称。参考这个答案 - stackoverflow.com/questions/29649460/…

标签: php laravel laravel-5


【解决方案1】:
@if(session()->has('qwick'))
    @include('includes.loggedinclude')
@else 
    @include('notloggedinclude.loggedinclude')
@endif

有关刀片的文档可以在here 找到。 会话文档可以在here找到。

【讨论】:

  • 我不想检查会话变量。而是会话名称,所以这不起作用
  • @moh.ABK 你是什么意思?这会检查会话名称
  • @AmirBar 在php 您可以设置多个不同名称的会话。因此,当用户决定不登录时,您可以设置一个名为 guest 的会话,如果用户登录,您还可以设置一个名为 regular 的会话。这些会话彼此独立。例如,登录网站的 web 部分并不意味着您已经登录了 blog 部分。
  • 是的,所以来宾会话是:if(session()->has('quest')) 常规会话是:if(session()->has('regular'))跨度>
  • 看看has('guest')部分你看到里面的“guest”字符串了吗?就像在 php 中做 $_SESSION['guest']
【解决方案2】:

你可以在 Laravel 中使用这种方式: 在您的 Controller 或 Route 函数中:

$request->session()->flash('your_session', 'your message');

在资源/视图/your_blade_file.blade.php 中

@if (session()->has('your_session'))
    anything ...
@endif

【讨论】:

    【解决方案3】:

    试试下面的代码片段。

    @if(session->has('qwick')) 
     @include('includes.loggedinclude checkout-lin')
    @else
      @include('checkout-nlin')
    @endif
    

    参考:

    Laravel Session variables in Blade @if

    http://laravel-recipes.com/recipes/90/including-a-blade-template-within-another-template

    If statements in blade templating?

    【讨论】:

    • 我不想检查会话变量。而是会话名称,所以这不起作用
    • 你的意思是 $_SESSION['qwick'] 是名称而不是变量?
    • 我已经编辑了你的答案来解释我想要实现的目标
    • 我相信你应该更新你的问题而不是我的答案!
    • @Venkatraman 它们是会话变量,moh.ABK 只想称它们为“名称”。
    【解决方案4】:

    检查用户的更好方法是在控制器中登录。在视图部分检查用户登录可能会破坏 MVC 规则。 谢谢。

    如果你有需要可以试试这个

    @if(session->get('qwick'))
    @include("includes.loggedinclude")
    @else 
    @include("notloggedinclude.loggedinclude")
    @endif
    

    【讨论】:

    • 如果您想根据用户是否登录来更改标题怎么办。你将不得不把它放在视图中你不会
    • @moh_abk:你最好把它放在控制器中,然后根据是否登录来推送刀片视图。
    猜你喜欢
    • 2018-04-04
    • 1970-01-01
    • 2015-02-13
    • 2019-12-09
    • 2020-04-26
    • 1970-01-01
    • 2013-04-29
    • 2015-09-15
    相关资源
    最近更新 更多