Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅在用户前缀中使用Laravel全局变量_Php_Laravel - Fatal编程技术网

Php 仅在用户前缀中使用Laravel全局变量

Php 仅在用户前缀中使用Laravel全局变量,php,laravel,Php,Laravel,我尝试在app/providers/AppServiceProvider.php中创建全局变量。 当前缀为webiste/user时,我想返回userID,我尝试转储,但结果为null use Auth; public function boot() { dump(@Auth::guard('users')->user()->id); //Null } 根据这些评论,我想通过在api.php文件中添加经过身份验证的新路由,您的问题可以很简单地得到解决 尝试以下方法: Route

我尝试在app/providers/AppServiceProvider.php中创建全局变量。 当前缀为webiste/user时,我想返回userID,我尝试转储,但结果为null

use Auth;
public function boot()
{
  dump(@Auth::guard('users')->user()->id); //Null
}

根据这些评论,我想通过在api.php文件中添加经过身份验证的新路由,您的问题可以很简单地得到解决

尝试以下方法:

Route::middleware('auth:api')->get('/webiste/user', function (Request $request) {
    return $request->user()->id;
});

您不能在AppServiceProvider的引导方法中访问auth用户。在身份验证机制之前调用此方法

您可以做的是创建ViewComposer,并将变量传递给所需的任何视图

首先创建一个ServiceProvider,比如说Composer ServiceProvider,您可以使用php artisan make:provider Composer ServiceProvider生成一个。 *不要忘记在config/app.php文件中注册提供者,并使用以下代码

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\View\Factory as ViewFactory;

class ComposerServiceProvider extends ServiceProvider
{
    public function boot(ViewFactory $view)
    {
        $view->composer('*', 'App\Http\ViewComposers\GlobalComposer');
    }

    public function register()
    {
        //
    }
}
namespace App\Http\ViewComposers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Contracts\View\View;

class GlobalComposer
{
    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
       $view->with('user', Auth::user());
    }
}
然后用下面的代码创建一个GlobalComposer.php类文件

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\View\Factory as ViewFactory;

class ComposerServiceProvider extends ServiceProvider
{
    public function boot(ViewFactory $view)
    {
        $view->composer('*', 'App\Http\ViewComposers\GlobalComposer');
    }

    public function register()
    {
        //
    }
}
namespace App\Http\ViewComposers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Contracts\View\View;

class GlobalComposer
{
    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
       $view->with('user', Auth::user());
    }
}
现在,服务提供者引导方法上的星号表示所有视图,这意味着GlobalComposer将对项目的所有视图采取行动。您可以用任何视图替换星号,也可以使用视图数组,例如:[“auth/login”,“auth/register']

接下来,在compose方法内的GlobalComposer文件上,您将编写要传递给Composer绑定到的视图的变量


查看Laravel也

谢谢,但这不是我想问的问题,因为我认为问题在于你没有获得id。因此,你试图实现的是,当登录用户访问时,会出现:/website/用户登录用户id?原因这听起来像是路由修复程序而不是服务身份验证防护程序在运行AuthServiceProvider(在AppServiceProvider之后运行)之前不会实际初始化。对于任何与身份验证相关的逻辑,Any rate服务提供程序都是错误的。所有与身份验证相关的逻辑都应该在中间件或作为处理请求的控制器的一部分运行的逻辑中。这看起来像是一张照片。