2012-12-10 40 views
3

我對DI和IoC這個概念很陌生,所以我可能會這樣做完全錯誤,但我試圖將匹配控制器的模型注入到該控制器構造函數(UserModel - > UsersController),以便以後可以嘲笑它。Laravel 4在控制器中注入一個雄辯模型

所以我的模型看起來像:

use Illuminate\Auth\UserInterface; 

class User extends Eloquent implements UserInterface { 


    public function getAuthIdentifier() 
    { 
     return $this->getKey(); 
    } 


    public function getAuthPassword() 
    { 
     return $this->password; 
    } 

} 

然後我試圖在UsersController注入,像這樣:

class UsersController extends Controller { 

    protected $user; 

    public function __construct(User $user) 
    { 
     $this->user = $user; 
    } 

    public function index() 
    { 
     //dd($this->user); 
     $users = $this->user->all(); 
     foreach ($users as $user) 
      print_r($user); 
     return; 
    } 

} 

然後當我在瀏覽器中點擊該控制器我得到一個「無法解析依賴解決「錯誤。

我注意到,這happend只有當我試圖注入類的子類的口才好,如果我嘗試用不擴展雄辯然後正常工作的自定義類相同的代碼。

我錯過了什麼?

+0

看看這個截屏http://vimeo.com/53029232 – Raftalks

+0

@Raf感謝,但它實際上是一個導致我在這裏,在該屏幕投泰勒不顯示如何注入的實際模型,是我正在嘗試做 – silkAdmin

+1

你嘗試過App :: bind('UserInterface','User');並把__controller(UserInterface $用戶) – Raftalks

回答

1

繼評論之後,我終於明白這是一個複雜的問題。要繞過這一點,您需要將模型與IoC綁定,並手動返回模型的新實例。

App::bind('User', function() 
{ 
    return new User; 
}); 
+0

嗨拉夫,謝謝我已經從那個線程得到了答案:http://forums.laravel.com/viewtopic.php?id=3878 – silkAdmin