我有一个这样的表单:
{{ Form::open(array('route' => 'notebook.store', 'files' => true)) }}
{{ Form::text('title', null, [
'class'=>'form-control',
'placeholder'=>'Title',
]) }}
<br>
{{ Form::text('description', null, [
'class'=>'form-control',
'placeholder' => 'Desc',
])}}
<br>
{{ Form::file('path') }}
<br>
{{ Form::submit('Save', [
'class' => 'btn btn-primary btn-lg pull-right'
]) }}
<br><br>
{{ Form::close()}}
问题是,如果'files'=>true
在表单描述中,那么我的控制器中的Input::all()
会返回一个空数组,当我删除它时,问题就会消失,Input::all()
会返回通常的预期输入。
编辑-我发现了问题所在。我的服务器在php.ini中的post_max_size非常低,显然,如果文件超过这个限制,它会清除所有post/get数据。
使用此:
{{ Form::open(array('route' => 'notebook.store', 'enctype' => 'multipart/form-data')) }}
出于任何原因:
{{ Form::open(array('route' => 'notebook.store', 'files' => true)) }}
不起作用!
如果没有收到任何POST数据,则必须检查post_max_size
指令,并与发送到服务器的POST数据量进行比较。
正如您已经经历过的,没有帖子数据的行为在文档中有明确的描述:
如果post数据的大小大于post_max_size,则$_post和$_FILES超全局变量为空。这可以通过各种方式进行跟踪,例如,将$_GET变量传递给处理数据的脚本,即,然后检查是否设置了$_GET["已处理"]。
解决方案是增加post_max_size
和/或upload_max_size
甚至memory_limit
的值。
它不起作用,因为您正在将files=>true添加到路由数组:
{{ Form::open(array('route' => 'notebook.store', 'files' => true)) }}
相反,试试这个
{{ Form::model(array('route'=>array('notebook.store'),'files'=>true)) }}
{!! Form::open(['url' => 'notebook.store', 'method' => 'post', 'enctype' => 'multipart/form-data']) !!}
<div class="form-group">
{!! Form::file('logo', null, ['class' => 'form-control']) !!}
</div>
{!! Form::submit('Upload', ['class' => 'btn btn-primary']) !!}