当我添加 'files'=>true 后,Laravel表单不返回输入

4

I have a form looking like this:

{{ 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数据。

我尝试在我的一个表单中添加 'files' => true,并且 Input::all() 没有问题。这个选项只是向 <form> 元素添加了 enctype="multipart/form-data" - totymedli
可能与服务器有关,但我不确定。这只发生在您添加要上传的文件时吗?还是它总是返回一个空数组? - Jason Lewis
你的控制器中的 Input::file('path') 是否为空? - KNaito
我尝试了空的和非空的"path"字段,但无论哪种情况下,Input::all()数组都是空的。 - user3555081
4个回答

5
请使用以下内容:
{{ Form::open(array('route' => 'notebook.store', 'enctype' => 'multipart/form-data')) }}

无论出于何种原因:

{{ Form::open(array('route' => 'notebook.store', 'files' => true)) }}

无法正常工作!


{!! Form::model($article,array('method' => 'PATCH','route'=>array('articles.update',$article->id),'files' => true)) !!} 我已经使用了这个,但是不起作用。 - sabin maharjan

2
如果您没有收到任何POST数据,您需要检查post_max_size指令并将其与您发送到服务器的POST数据量进行比较。
正如您已经经历过的那样,在文档中清楚地描述了没有POST数据的行为:
如果POST数据的大小大于post_max_size,则$_POST和$_FILES超级全局变量为空。这可以通过各种方式跟踪,例如通过将$_GET变量传递给处理数据的脚本,即,然后检查是否设置了$_GET ['processed']。
解决方案是增加post_max_size的值,以及/或者upload_max_size或甚至memory_limit

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

你能否添加一些解释,说明你的想法将如何解决这个问题? - Reporter

0

它不起作用是因为你将 files=>true 添加到路由数组中:

{{ Form::open(array('route' => 'notebook.store', 'files' => true)) }}

不要这样做,试试这个

{{ Form::model(array('route'=>array('notebook.store'),'files'=>true)) }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接