Таким образом, моя новостная форма очень проста:
<div class="row padding-10"> {!! Form::open(array('class' => 'form-horizontal margin-top-10')) !!} <div class="form-group"> {!! Form::label('title', 'Title', ['class' => 'col-md-1 control-label padding-right-10']) !!} <div class="col-md-offset-0 col-md-11"> {!! Form::text('title', null, ['class' => 'form-control']) !!} </div> </div> <div class="form-group"> {!! Form::label('body', 'Body', ['class' => 'col-md-1 control-label padding-right-10']) !!} <div class="col-md-offset-0 col-md-11"> {!! Form::textarea('body', null, ['class' => 'form-control']) !!} </div> </div> <div class="col-md-offset-5 col-md-3"> {!! Form::submit('Submit News', ['class' => 'btn btn-primary form-control', 'onclick' => 'this.disabled=true;this.value="Sending, please wait...";this.form.submit();']) !!} </div> {!! Form::close() !!}
Это обрабатывается NewsProvider:
public function store() { $validator = Validator::make($data = Input::all(), array( 'title' => 'required|min:8', 'body' => 'required|min:8', )); if ($validator->fails()) { return Redirect::back()->withErrors($validator)->withInput(); } News::create($data); return Redirect::to('/news'); }
Но у меня есть другое поле, а не только тело заголовка и текста в базе данных, которое является author_id, и я понятия не имею, как добавить информацию, например идентификатор пользователя из текущего пользователя, прошедшего проверку подлинности, который не был предоставлен по форме. Я знаю, как добавить скрытый ввод в форму с идентификатором пользователя, но тогда кто-то может изменить значение скрытого поля. Как мне сделать правильный путь?
Возможно, мне нужно каким-то образом отредактировать мою красноречивую модель новостей, а именно:
use Illuminate\Database\Eloquent\Model as Eloquent;
класс News extends Eloquent {
// Add your validation rules here public static $rules = [ 'title' => 'required|min:8', 'body' => 'required|min:8', ]; // Don't forget to fill this array protected $fillable = array('title', 'body'); }
Вы всегда можете получить текущий аутентифицированный пользователь Auth::user()
. И вы можете также изменить массив $data
прежде чем передавать его для create
. Вот как вы это делаете:
$data['author_id'] = Auth::user()->id; News::create($data);
Также не забудьте добавить author_id
к fillable
атрибутам
protected $fillable = array('title', 'body', 'author_id);