У меня есть эта основная форма:
{{ Form::open(array('url' => URL::route('post-account-changeProfilePic'), 'files' => true, ))}}
{{ Form::file('photo') }}
<br />
{{ Form::submit('Regístrarme', array("class" => "button expand round")) }}
{{ Form::close() }}
Мой маршрут находится внутри двух групп: before=>Auth
и before=>csrf
Route::post('/accont/changeProfilePic', array(
'as' => 'post-account-changeProfilePic',
'uses' => 'CallCenterController@postChangeProfilePic'
));
В моем контроллере я просто сбрасываю переменную, чтобы увидеть, что у меня есть:
public function postChangeProfilePic(){
$input = Input::all();
var_dump($input);
}
Это ошибки, которые я получаю:
1- Illuminate\Session\TokenMismatchException.
Это из-за фильтра csrf, но поскольку я использую лезвие, токен на самом деле есть. Кроме того, если я удалю атрибут имени из ввода файла, эта ошибка не будет отображаться.
До сих пор я решил разместить маршрут за пределами фильтра csrf, пока не пойму, что происходит.
2- После размещения маршрута из фильтра csrf и попробуйте отобразить все входы, я получаю null
массив.
Я решил добавить новое текстовое поле, и если я не выберу фото/рис и отправлю только такую форму, он выведет на экран все входы, но, конечно, файл пуст/нуль.
Любая идея о том, что я делаю неправильно?
Хорошо, я думаю, это может быть
изменение
{{ Form::open(array('url' => URL::route('post-account-changeProfilePic'),
'files' => true, ))}}
в
{{ Form::open(array('route' => 'post-account-changeProfilePic',
'files' => true )) }}
Я не думаю, что вам нужно "," в конце истины.
В вашей форме попробуйте изменить это на массив ('before' => 'csrf'), function()
{{ Form::open(array('url' => URL::route('post-account-changeProfilePic'), 'before' => 'csrf'), 'files' => true, ))}}
Маркер csrf должен быть там по умолчанию, так как вы выполняете запрос POST, поэтому не знаете, где там проблема.
http://laravel.com/docs/4.2/html#csrf-protection
для ввода попробуйте
public function postChangeProfilePic(){
if (Input::hasFile('photo'))
{
$input= Input::file('photo');
var_dump($input);
}
}