如何在拉拉维尔中使用全局变量



是否可以在多个视图之间共享和更改某些变量?例如,我想有一个将在所有视图之间共享的变量$user。当用户记录变量时,将设置变量,当用户注销时,将取消设置变量。我无法使用以下命令实现请求以下组合:在应用服务提供商中:

view()->share('var', 1);

在控制器中:

$var = view()->shared('var');.
$var ++;
view()->share('var', var);
return view(''', 'var'=>$var)

每次重新加载页面时$var总是相同的 (2(。

我想有一个将在所有视图之间共享的变量$user

应使用 auth()->user() 在任何视图中获取经过身份验证的用户实例。

但是,如果出于某种原因不想使用它,则可以与视图编辑器在多个视图之间共享变量。

仅当您要与所有视图共享变量时,share()方法才有用。要使其正常工作,请view()->share('key', 'value')服务提供商的boot()方法。

此外,控制器中的代码看起来不是要在视图之间共享数据,而是要在请求之间共享数据。为此使用会话。

要保存数据:

session(['key' => 'value']);

要获取另一个请求中的数据,请执行以下操作:

session('key');
<</div> div class="one_answers">

最好添加另一个服务提供商。看看我的提供者:

  <?php
     namespace AppProviders;
     use Request;
     use IlluminateSupportServiceProvider;

 class ViewComposerServiceProvider extends ServiceProvider
{
public function boot()
{
   $this->globalThings();
   //call another globals' function here
}
public function register()
{
    //
}
/**
 * Get the golbals
 */
private function globalThings()
{
    view()->composer(array('*.*'),function($view){
        //get the data however you want it!
        $view->with('global', Model::where('field','value')->get());
    });
}

并且不要忘记将服务提供商添加到提供商是配置/应用程序列表中.php

        AppProvidersViewComposerServiceProvider::class,

相关内容

  • 没有找到相关文章

最新更新