我有这个基本形式:
{{ 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过滤器,但由于我使用的是刀片,因此令牌实际存在。此外,如果我从文件输入中删除name属性,则不会显示此错误。
到目前为止,我决定将路径放在csrf过滤器之外,直到我理解发生了什么为止。
2-将路径放出csrf过滤器后,尝试显示所有输入,我得到一个null
数组。
我决定添加一个新的文字字段,如果我不选择照片/图片并且只发送这样的表格,它会在屏幕上转储所有输入,但当然,文件是空/ null。
对我做错了什么的想法?
答案 0 :(得分:0)
在您的表单中尝试将其更改为 数组(&#39;之前&#39; =&gt;&#39; csrf&#39;),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);
}
}
答案 1 :(得分:0)
好吧,我认为可能是这个
变化
{{ Form::open(array('url' => URL::route('post-account-changeProfilePic'),
'files' => true, ))}}
到
{{ Form::open(array('route' => 'post-account-changeProfilePic',
'files' => true )) }}
我认为你不需要&#39;&#39;在真实的结尾。