当我添加"文件"=>true 时,Laravel表单不返回输入



我有一个这样的表单:

{{ 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']) !!}

最新更新