19

I was wondering how to do a global variable to save me few lines of copy and pasting this lines. Array it probably and put them in one variable instead? I want to use this variable in other routes.

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

6 に答える 6

13

私が見た最良の方法は、構成ファイルを使用することです。

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
于 2014-03-10T14:06:39.453 に答える
7

グローバルは悪いです。何があっても、グローバル変数を使用しないでください。グローバル変数の使用について考えないでください。コードでそれらを使用しない方法を常に考えてください。それでも、必要なものはすべて揃っています。ここにいくつかの理由がありますが、他にもたくさんあります。

代わりに、Laravel パワーを使用して以下を支援します。

認証されたルートのグループを作成して、ルートにログインを強制します。

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}}

User インスタンスをすべてのビューに送信するコードを書きたくない場合は、Laravel の 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');
    }

}

Auth::user()Laravel はこれらのビューに として自動的に挿入するため$userです。

于 2013-11-13T13:02:56.513 に答える
5

私はそのView::share方法が好きです。

app/controllers/BaseController.phpに以下を追加します

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

$userすべてのビューで利用できるようになりました。

参考文献: Laravel docsブログ投稿

于 2014-02-06T19:47:45.563 に答える
0

そのためのオブジェクトを作成する必要があります。

providerこれらのプロパティを持つオブジェクトを作成し、emailインスタンスname化し、次のようにプロパティ値を設定します。

$provider = new Provider();

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

次に、オブジェクトをセッションに保存します。

$_SESSION['provider'] = $provider;

私は Laravel に慣れていないので、Authオブジェクトを直接操作するのが良い方法かどうかはわかりませんが、より簡単な解決策は次のとおりです。

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

また、セッションで機密情報を扱うことにも注意してください:)

于 2013-11-13T11:40:57.320 に答える