是否可以在多个视图之间共享和更改某些变量?例如,我想有一个将在所有视图之间共享的变量$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,