Php laravel 4中的全局变量
我想知道如何使用一个全局变量来保存几行复制和粘贴这些行。数组,然后将它们放在一个变量中?我想在其他路径中使用此变量Php laravel 4中的全局变量,php,variables,laravel,laravel-4,global,Php,Variables,Laravel,Laravel 4,Global,我想知道如何使用一个全局变量来保存几行复制和粘贴这些行。数组,然后将它们放在一个变量中?我想在其他路径中使用此变量 $providerEmail = Auth::user()->email; $providerName = Auth::user()->first_name; $providerSurname = Auth::user()->last_name; $providerMobile = Auth::user()->mobile; 您应该创建一个
$providerEmail = Auth::user()->email;
$providerName = Auth::user()->first_name;
$providerSurname = Auth::user()->last_name;
$providerMobile = Auth::user()->mobile;
您应该创建一个对象来执行此操作 创建具有这些属性的
提供者
对象、电子邮件
、名称
等,并实例化它并设置属性值,如:
$provider = new Provider();
$provider->email = Auth::user()->email;
然后在会话中保存对象:
$_SESSION['provider'] = $provider;
我不熟悉Laravel,也不知道直接使用Auth
对象是否是一种好做法,但更简单的解决方案是:
$_SESSION['provider'] = Auth::user();
还要注意在你的会议上处理敏感信息:)我在你问的另一个问题中也给了你同样的答案,你没有回答
没有理由为$provider
模型的每个属性单独设置一个变量。只需将整个模型保存到如下变量中即可
if (Auth::check())
{
$provider = Auth::user();
}
Route::get('/provider/page/example', function()
{
$provider = Auth::user();
return View::make('name.of.view', ['provider' => $provider]);
});
<p>Your email address is: {{$provider->email}} and your first name is {{$provider->first_name}}</p>
这通常是在这样的路线上完成的
if (Auth::check())
{
$provider = Auth::user();
}
Route::get('/provider/page/example', function()
{
$provider = Auth::user();
return View::make('name.of.view', ['provider' => $provider]);
});
<p>Your email address is: {{$provider->email}} and your first name is {{$provider->first_name}}</p>
完成此操作后,您可以在视图中访问$provider
的不同属性,如下所示
if (Auth::check())
{
$provider = Auth::user();
}
Route::get('/provider/page/example', function()
{
$provider = Auth::user();
return View::make('name.of.view', ['provider' => $provider]);
});
<p>Your email address is: {{$provider->email}} and your first name is {{$provider->first_name}}</p>
完成此操作后,您可以在视图中使用
$provider
变量,如上图所示,使用$provider->email
等操作。您还可以通过使用$this->provider
在控制器中的其他位置使用它。您可以在App::before
事件中创建一个全局singleton
App::before(function($request)
{
// Singleton (global) object
App::singleton('myApp', function(){
$app = new stdClass;
if (Auth::check()) {
// Put your User object in $app->user
$app->user = Auth::User();
$app->isLoggedIn = TRUE;
}
else {
$app->isLoggedIn = FALSE;
}
return $app;
});
$app = App::make('myApp');
View::share('myApp', $app);
});
在任何视图中,都可以像这样使用它
if($myApp->isLoggedIn) {
$myApp->user->email;
$myApp->user->first_name;
// ...
}
在任何控制器中,都可以使用
$myApp = App::make('myApp');
if($myApp->isLoggedIn) {
$myApp->user->email;
$myApp->user->first_name;
// ...
}
退房。环球杯不好。不管怎样,不要使用全局变量,不要考虑使用全局变量,始终要考虑如何在代码中不使用它们,而仍然拥有所需的一切,还有很多 相反,请使用Laravel power来帮助您: 在路由上强制登录创建经过身份验证的路由组:
Route::group(array('before' => 'auth'), function()
{
Route::get('/users/posts', array('as'=>'users.posts.index', 'uses'=>'PostsController@usersPostsIndex'));
});
现在您知道,对您的帖子的每个调用都将经过身份验证,您可以
class PostsController extends Controller {
public function usersPostsIndex()
{
return View::('users.posts.index')->
with('user', Auth::user());
}
}
在你看来,你只需要
{{$user->email}}
{{$user->first_name . ' ' . $user->last_name}}
{{$user->email}}
{{$user->mobile}}
如果不想编写代码将用户实例发送到所有视图,请使用Laravel的View Composer的魔力,将其添加到filters.php或创建Composer.php文件:
View::composer(array('users.posts.index','users.posts.edit'), function($view)
{
$view->with('user', Auth::user());
});
这就是现在可以使用视图的方式:
class PostsController extends Controller {
public function usersPostsIndex()
{
return View::('users.posts.index');
}
public function usersPostsEdit()
{
return View::('users.edit.index');
}
}
因为Laravel会自动将
Auth::user()
作为$user
插入这些视图中,我喜欢View::share
方法
在app/controllers/BaseController.php中添加以下内容
现在,$user
将可用于所有视图
参考资料:
,我见过的最好的方法是使用配置文件 在app->config文件夹中,创建一个名为的新文件(例如
settings.php
)
然后,在刚刚创建的配置文件(settings.php
)中,您可以添加:
<?php
$setting_data['foo'] = 'bar';
$setting_data['bar'] = 'foo';
return $setting_data;
目前唯一的敏感信息是用户的电子邮件地址。你应该注意你的会话信息,如果你真的需要存储它,就去做吧。我的会话存储用户
id
,当我需要它时,我会从数据库中请求它。我猜@almosnow,谢谢!我在哪里可以在{code here}行之前插入App::呢?我是说什么文件??感谢您的澄清:)找到了在哪里,它在filter.php:)再次感谢您的代码!首先,非常感谢您提供此解决方案。但是,我如何使它对所有控制器/模型等全局可用,而不必在每次需要在控制器中使用时都实例化它?@Tim,非常欢迎您,在视图中它已经在全局可用,您可以使用$myApp
从任何视图访问它,因为视图::共享('myApp',$app);
从任何控制器
您可以使用app('myApp')
或app::make('myApp')
访问它。它仍然不适用于我。我缺少什么吗?它说“未定义变量”您必须是,它可以工作,并且在官方文档中。确保您添加了View::share('myvar',myvalue'))在控制器中,然后在视图中确保使用$myvar
。