【问题标题】:how to Inject a Sentry 2 User Model into a controller - laravel 4如何将 Sentry 2 用户模型注入控制器 - laravel 4
【发布时间】:2013-10-18 09:19:28
【问题描述】:

如何使用 IoC 将 Sentry 2 User 模型注入 laravel 4 控制器?

例如,我想要以下内容

class myController extends BaseController {

    /**
     * creates a list of MyModel Models
     *
     * @return View
     */
    public function getIndex( User $user )
    {
        // fetch models
        $models = MyModel::all();

        // Show the page
        return View::make('my-views.the-view', compact('models', 'user'));
    }

}

【问题讨论】:

    标签: php laravel laravel-4 ioc-container cartalyst-sentry


    【解决方案1】:

    这就是我喜欢的方式:

    class myController extends BaseController {
    
        $protected $user
    
        /**
         * creates a list of MyModel Models
         *
         * @return View
         */
    
        function __construct(User $user){
            parent::__construct();
            $this->user = $user;
        }
    
        public function getIndex()
        {
            // fetch models
            $models = MyModel::all();
    
            // Show the page
            return View::make('my-views.the-view', compact('models', 'user'));
        }
    
    }
    

    您也可以在方法中执行此操作,但是...好吧,也请好好阅读一下:http://fabien.potencier.org/article/11/what-is-dependency-injection

    【讨论】:

    • 这很棒.. 虽然我已经意识到这会返回实际的 Sentry User 模型而不是 Sentry Provider 模型,所以我们需要执行以下操作:App::instance( 'User', Sentry::GetUser() );
    • ALSO... 在每个视图调用中保存 compact('models', 'user')。我们可以将 View::share('user', $user); 放在基本控制器构造函数中。
    • 你也可以帮我回答这个问题......正如你在 IoC 中所知道的那样:-) stackoverflow.com/questions/19445615/…
    • 你明白了 - 你做了 App::instance('foo', $foo); “存储”它,然后 App::make('foo') 将其取出。除了 View::share(),查看laravel.com/docs/responses#view-composers
    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2014-01-26
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多