【问题标题】:Laravel form not returning input when I add 'files'=>true当我添加“文件”=> true 时,Laravel 表单不返回输入
【发布时间】:2014-06-05 00:39:57
【问题描述】:

我有一个看起来像这样的表格:

{{ 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'=&gt;true 在表单描述中,我的控制器中的Input::all() 返回一个空数组,当我删除它时,问题就消失了,Input::all() 返回通常的预期输入。

编辑-我发现了问题所在。我的服务器在 php.ini 中的 post_max_size 非常低,如果文件超过该限制,它显然会清除所有的 post/get 数据。

【问题讨论】:

  • 我尝试将'files' =&gt; true 添加到我的一个表单中,Input::all() 没有问题。此选项只是将enctype="multipart/form-data" 添加到&lt;form&gt; 元素。
  • 可能与服务器有关,尽管我不确定是什么。是仅当您添加要上传的文件时,还是总是返回一个空数组?
  • 控制器中的 Input::file('path') 是否为空?
  • 我尝试使用空和填充的“路径”字段,在这两种情况下 Input::all() 数组都是空的

标签: php forms file laravel


【解决方案1】:
    {!! 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']) !!}

【讨论】:

  • 您能否补充说明,为什么您的想法会解决问题?
【解决方案2】:

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

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

试试这个

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

【讨论】:

    【解决方案3】:

    使用这个:

    {{ 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)) !!}我用过这个,但是不行
    【解决方案4】:

    如果您没有收到任何 POST 数据,则必须检查 post_max_size 指令并比较您发送到服务器的 POST 数据量。

    正如您已经体验过的,没有帖子数据的行为在docs 上有明确描述:

    如果 post 数据的大小大于 post_max_size,则 $_POST 和 $_FILES 超全局变量为空。这可以通过各种方式进行跟踪,例如通过将 $_GET 变量传递给处理数据的脚本,即 ,然后检查是否设置了 $_GET['processed']。

    解决方案是增加post_max_size 和/或upload_max_size 甚至memory_limit 的值。

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2017-05-02
      • 2021-11-20
      • 2018-01-05
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 2021-05-03
      相关资源
      最近更新 更多