Актуальный способ загрузки файла через фронт
Чтобы всё работало, в первую очередь не забываем прописать форме атрибут enctype="multipart/form-data" и добавить скрытое поле с указанием метода-обработчика:
<input type="hidden" name="_handler" value="onSave">
и сессионный ключ с токеном:
{{ form_token() }}
{{ form_sessionKey() }}
Пусть за загрузку файла у нас отвечает это поле:
<input type="file" name="poster">
Тогда в самом файле компонента метод-обработчик будет выглядеть так:
public function onSave(){
$book = new Book();
$book->title = Input::get('title');
$book->save();
$file_poster = Input::file('poster');
if (Input::hasFile('poster') && $file_poster->isValid()) {
$file = new File();
$file->data = $file_poster;
$file->is_public = true;
$file->save();
$file_to_book_relation = $book->poster();
$file_to_book_relation->add($file, $this->sessionKey);
}
Flash::success('Книга добавлена!');
return Redirect::back();
}
Думаю здесь всё максимально понятно, добавлю только что в самой модели Book должно быть объявлено свойство, указывающее на тип связи модели с файлом. В данном случае у меня так:
public $attachOne = [
'poster' => 'System\Models\File'
];
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()