代码之家  ›  专栏  ›  技术社区  ›  Tuomas Tuokkola

从阵列中动态检索控制器中的媒体上载

  •  0
  • Tuomas Tuokkola  · 技术社区  · 8 年前

    我使用的是Laravel 5.1,我使用的是Illuminate\Http\Request实例来访问已发送的文件请求,但是我似乎找不到访问媒体元素的正确方法。我可以访问对象中的所有其他值。

    以下是我正在使用的JSON数据格式:

    {"_method":"PUT",
    "topic":"1 test",
    "description":"1 test",
    "media_description":"1 test",
    "old_parts":
      {"part-1":
        {"sub_header":"test 2",
         "text_field":"test 2 ",
         "article_id":"18",
         "media":{}},
      "part-2":
        {"sub_header":"test 3 ",
         "text_field":"test 3",
         "article_id":"18",
         "media":{}}
      },
    "published":"1",
    "media":{}
    }
    

    我使用两个foreach循环访问控制器中的媒体,一个循环用于数据库收集,另一个循环用于表单内容。我可以使用以下方法访问媒体元素。

    if ($file = $request->file('media-' . $running_number)) {...} 
    

    但它会大大降低可读性,因为我应该将f.e.字段命名为media-1,media-2。。。不要像我处理其他事情那样使用foreach循环访问它们。

    那么有没有办法用foreach循环变量访问文件呢?

    像这样的东西

    foreach($input['old_parts'] as $old_part) { 
    
      if ($old_part->hasFile('media')) { ... }
    
    }
    

    如果使用键入的行,函数将返回FatalThrowableError:Call to a member function hasFile()on array。

    或者我应该用一些像

    $request->file('old_parts[part-'.$x.'][media]');
    

    访问文件输入并使用自定义变量计算索引?问题是,我不知道如何使用文件在JSON中进入多个级别,因为旧的部分[“…”][“…”]和旧的部分[“部分-1”]->媒体似乎不返回任何内容(返回null)。

    0 回复  |  直到 8 年前