Запрос формы Laravel 5.1 не сохраняет данные

Я пытаюсь сохранить данные с помощью запроса формы, но это не работает.

Данные возвращаются с массивом ошибок или с сообщением об успешном завершении, но данные не сохраняются.

Что не так с моим кодом: https://gist.github.com/kneipp/42f7d316b9bbc2157668

<?php

namespace App\Http\Requests;

use App\Http\Requests;

class ProfileFormRequest extends Request
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'intro' => 'required',
        ];
    }
}


<?php

namespace App\Http\Controllers;

use App\Profile;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;

class ProfileController extends Controller
{
    public function update(Requests\ProfileFormRequest $request)
    {
        //$id = Auth::User()->id;

        return \Redirect::route('profile.edit')->with('message', 'Dados salvos!');
    }   
}

person kneipp    schedule 26.08.2015    source источник
comment
Отредактируйте свой вопрос и добавьте соответствующий встроенный код.   -  person lukasgeiter    schedule 26.08.2015
comment
Я не вижу в опубликованном вами коде ничего, что даже ПОПРОБУЙТЕ сохранить данные каким-либо образом.   -  person litelite    schedule 26.08.2015
comment
Laravel FormRequest не сохраняет данные автоматически, и он не предназначен для этого. Он предназначен для проверки и фильтрации запросов формы. Вы должны обрабатывать save() и любые другие действия в вашем контроллере.   -  person yangqi    schedule 26.08.2015


Ответы (2)


Рефакторинг кода, спасибо за совет по Auth::id():

public function update(Requests\ProfileFormRequest $request)
{
    Profile::find(Auth::id())
    ->fill($request->all())
    ->save();

    return \Redirect::route('profile.edit')->with('message', 'Dados salvos!');
}
person kneipp    schedule 27.08.2015

вам нужно обновить свой код, чтобы фактически вызвать метод сохранения в вашей модели, что можно сделать различными способами, например.

public function update(Requests\ProfileFormRequest $request)
{
    Auth::user()->intro = $request->input('intro');
    Auth::user()->save();

    return \Redirect::route('profile.edit')->with('message', 'Dados salvos!');
} 

Запросы формы Laravel предназначены (среди прочего) для проверки ввода и автоматической обработки перенаправления пользователя обратно.

Также в качестве примечания вы можете просто использовать Auth::id() для получения идентификатора вошедшего в систему пользователя.

person ExoticChimp    schedule 26.08.2015