Auth :: check()在控制器中工作但在视图中不工作?

时间:2016-01-26 04:36:41

标签: laravel authentication laravel-5

我使用Auth::attempt()来记录用户:

if (Auth::attempt(['email' => $email, 'password' => $password], true)) {
        return redirect('/');
    }
    else{
        return 'wrong email or pass';
    }

然后我重新加载浏览器并调用函数:

if (Auth::check()) {
        return 1;
    }

这是return 1;

但是当我打电话时:

@if (\Illuminate\Support\Facades\Auth::check())
            echo '<label style="width: 20%;color: #ff3f41;margin-left: 10px;">login</label>';
        @else
            echo '<label style="width: 20%;color: #ff3f41;margin-left: 10px;">nothing</label>';

        @endif

此次打印nothing

任何帮助。感谢。

3 个答案:

答案 0 :(得分:1)

而不是

@if (\Illuminate\Support\Facades\Auth::check()) ...

尝试使用

@if(Auth::Check())

这应该有效。你不需要在Blade模板中通过其完整路径调用方法

答案 1 :(得分:1)

@if(Auth::Check())
    <label style="width: 20%;color: #ff3f41;margin-left: 10px;">login</label>
@else
    <label style="width: 20%;color: #ff3f41;margin-left: 10px;">nothing</label>
@endif

在视图中不需要命名空间因为它是在Facades中定义的,所以在config/app.php

中进行检查

如果您在刀片中使用bracketsecho,则需要将它们包装在<?php tag //code echo 'something' ?>

Laravel方式! 如果您需要在视图中回显某些内容,请使用{{ }}{!! !!}差异{{ }} escape HTML tags{!! !!} doesn't escape HTML

答案 2 :(得分:0)

在boot(){}部分中转到 App / Providers / AppServiceProvider.php 部分写下此行view()->share('key', 'my name is Rome'); 使用此功能,您将能够全局访问&#34; key&#34;所有模板中的变量值

例如:见下文

<?php

namespace App\Providers;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->share('key', 'my name is Rome');
    }
}