2017-11-11 33 views
2

如果可以將控制器的動作類型提示設置爲現有模型,並且這種方式強制動作以通過post方法傳遞的數據來安裝模型(如果後置字段與模型字段相匹配),那將是完美的。我從asp.net MVC知道這一點,它工作完美,但無法找到在Laravel中做類似事情的方式。是否可以將模型傳遞給Laravel的動作並使用匹配的發佈數據自動安裝它?

預先感謝您

+0

您是指路由模型綁定? –

回答

2

好吧,假設你在User模式它可以在他們做的方式是這樣設置$fillable屬性:

class UserService 
{ 
    protected $user; 

    public function __construct() 
    { 
     $this->user = User::create(request()->all()); 
    } 

    public function getUser() 
    { 
     return $this->user; 
    } 

} 


class UserController 
{ 
    public function store(UserService $service) 
    { 
     $user = $service->getUser(); 
     return redirect()->route('users.show', $user); 
    } 
} 

但這是相當不規範的行爲。我看不出有任何需要自動這樣創建模型,合理得多將投入控制器剛:

$user = User::create($request->all()); 

什麼你也應該考慮的是,應填寫在田間地頭,最合理的是通過直接應該使用哪些字段,例如:

$user = User::create($request->only('name','email','password')); 
+0

非常好的答案!它看起來非常方便,只需一行代碼即可解決我的需求。生成服務的解決方案也非常簡潔。謝謝,不幸的是我現在可以'測試一下,所以我會接受答案時,我可以:) –

相關問題