Глобальная переменная в laravel 4

Мне было интересно, как сделать глобальную переменную, чтобы сохранить несколько строк копии и вставить эти строки. Массив, возможно, и вместо них вместо них помещается одна переменная? Я хочу использовать эту переменную в других маршрутах.

$providerEmail = Auth::user()->email; $providerName = Auth::user()->first_name; $providerSurname = Auth::user()->last_name; $providerMobile = Auth::user()->mobile; 

Вы можете создать глобальный singleton в App::before event

 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; // ... } по if($myApp->isLoggedIn) { $myApp->user->email; $myApp->user->first_name; // ... } 

В любом контроллере вы можете использовать

 $myApp = App::make('myApp'); if($myApp->isLoggedIn) { $myApp->user->email; $myApp->user->first_name; // ... } по $myApp = App::make('myApp'); if($myApp->isLoggedIn) { $myApp->user->email; $myApp->user->first_name; // ... } 

Проверьте события приложений .

Лучший способ, который я видел, – использовать файл конфигурации.

В папке app -> config вы создаете новый файл (например, settings.php )

  app config settings.php 

Затем в созданном вами файле конфигурации ( settings.php ) вы можете добавить:

 <?php $setting_data['foo'] = 'bar'; $setting_data['bar'] = 'foo'; return $setting_data; 

Затем вы можете извлечь файл конфигурации из своего кода, используя:

 echo Config::get('settings.foo'); // Will echo bar echo Config::get('settings.bar'); // Will echo foo 

Глобалы плохие. Независимо от того, что, не используйте глобальные переменные, не думайте об использовании глобальных переменных, всегда думайте о том, как вы не можете использовать их в своем коде и все еще иметь все, что вам нужно. Вот несколько причин , и их гораздо больше.

Вместо этого используйте 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's View Composers, добавив это в свой файл filters.php или создав файл composers.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 .

Добавьте в приложение / контроллеры следующее: BaseController.php

 class BaseController extends Controller { public function __construct() { $name = 'jack'; View::share('user', $name); // Share $user with all views } } 

и теперь $user будет доступен для всех ваших просмотров.

Ссылки: Laravel docs , сообщение в блоге

Я также дал вам тот же ответ в другом вопросе, который вы задали, вы не ответили. Ссылка

Нет причин иметь отдельную переменную для каждого свойства вашей модели $provider . Просто сохраните всю модель с такой переменной.

 if (Auth::check()) { $provider = Auth::user(); } 

Это обычно делается на таком пути.

 Route::get('/provider/page/example', function() { $provider = Auth::user(); return View::make('name.of.view', ['provider' => $provider]); }); 

После этого вы можете получить доступ к различным свойствам в $provider в ваших представлениях, подобных этому.

 <p>Your email address is: {{$provider->email}} and your first name is {{$provider->first_name}}</p> 

Другим вариантом является использование контроллера и установка этой переменной только один раз в контроллере, что делает его доступным из всех представлений, используя View::share() .

 class ProviderController extends BaseController { protected $provider; public function __construct() { $this->provider = Auth::user(); View::share('provider', $this->provider); } public function getIndex() { return View::make('some.view.name'); } } 

Сделав это, вы можете использовать переменную $provider в своих представлениях, как показано выше, используя такие вещи, как $provider->email . Вы также можете использовать его в другом месте контроллера, используя $this->provider .

Вы должны создать объект для этого.

Создайте объект- provider с этими свойствами, email , name и т. Д. И создайте его и задайте значения свойств, например:

 $provider = new Provider(); $provider->email = Auth::user()->email; 

И затем вы сохраняете объект в своей сессии:

 $_SESSION['provider'] = $provider; 

Я не знаком с Laravel, и я не знаю, хорошо ли работать непосредственно с объектом Auth но более простым решением было бы:

 $_SESSION['provider'] = Auth::user(); 

Также имейте в виду работу с конфиденциальной информацией на вашем сеансе 🙂