2017-11-11 35 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

非常好的答案!它看起来非常方便,只需一行代码即可解决我的需求。生成服务的解决方案也非常简洁。谢谢,不幸的是我现在可以'测试一下,所以我会接受答案时,我可以:) –

相关问题