Было бы идеально, если бы это можно было установить подсказку типа для действия контроллера для существующей модели и таким образом заставить действие инсталлировать модель с данными, переданными методом post (если поля сообщения соответствуют полям модели). Я знаю это из asp.net MVC, и он отлично работает, но я не мог найти способ сделать что-то похожее в Laravel.

Заранее спасибо

2
Jacek Dziurdzikowski 11 Ноя 2017 в 13:41

1 ответ

Лучший ответ

Что ж, если предположить, что вы установили свойство $fillable в модели User, это можно сделать следующим образом:

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'));
2
Marcin Nabiałek 11 Ноя 2017 в 11:45