2013-10-18 40 views
0

如何使用IoC将Sentry 2用户模型注入laravel 4控制器?如何将Sentry 2用户模型注入控制器 - 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')); 
    } 

} 

回答

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

+0

这是伟大的..虽然我已经意识到,这将返回实际Sentry用户模型而不是Sentry提供者模型,所以我们需要执行以下操作: 'App :: instance('User',Sentry :: GetUser());' – AndrewMcLagan

+0

也可以在每个视图调用中保存'compact('models','user')'。我们可以将'View :: share('user',$ user);'放在基础控制器的构造函数中。 – AndrewMcLagan

+0

你也许能够帮助我回答这个问题......就像你在IoC中所看到的那样:-) http://stackoverflow.com/questions/19445615/route-model-binding-and-soft- deletes-laravel-4 – AndrewMcLagan