如何从SLIM PHP中的getParams()中的数组输入字段获取发布数据

时间:2017-09-21 04:34:26

标签: php slim slim-3

我有一个包含name[],age[],gender[]等数组输入字段的表单。 我试图使用

功能访问苗条的PHP中的帖子数据
$name = $request->getParam('name');

但我没有得到任何数据。任何形式的帮助将不胜感激。提前致谢。

4 个答案:

答案 0 :(得分:2)

看起来你有一般的想法,但看了一下文档。看起来你需要为帖子数据使用苗条的助手。这是文档显示的示例,以便检索标题和描述的值。如下所述,filter_var()不是必需的,但强烈建议和良好做法是通过删除可能有害的任何特殊字符来增加额外的保护级别。

$app->post('/ticket/new', function (Request $request, Response $response) {
    $data = $request->getParsedBody();
    $ticket_data = [];
    $ticket_data['title'] = filter_var($data['title'], FILTER_SANITIZE_STRING);
    $ticket_data['description'] = filter_var($data['description'], FILTER_SANITIZE_STRING);
    // ...

https://www.slimframework.com/docs/tutorial/first-app.html,如果您想了解更多相关信息,请参阅此示例的链接。

答案 1 :(得分:2)

如果要传递一个对象数组,可以通过传递JSON格式的值来实现相同的目的。

例如: 我的样本JSON格式如下。

{
    "news_title": "Title",
    "news_description": "news_description",
     "news_date": "03-12-2017",
        "image_list": [
                {
                    "imagedata": "data",
                     "fileName": "Imags12.png" 
                },
                {
                    "imagedata": "data",
                     "fileName": "Imags11.png" 
                }

            ]
}

您可以阅读JSON中的slim数据,如下所述。

$app->post('/create_news_json', function () use ($app) {
    $json = $app->request->getBody();
    $data = json_decode($json, true); // parse the JSON into an assoc. array
    $news_title=$data['news_title']; // to retrieve value from news_title
    $news_description=$data['news_description']; // to retrieve value from news_description
    $news_date = date_format(date_create($data['news_date']),"Y-m-d");  // to 
    retrieve value from news_date and convert the date into Y-m-d format

    $news_ImageList=$data['image_list']; //read image_list array
    $arr_length=count($data['image_list']);//calculate the length of the array.
     // trace each elements in image_list array as follows.
     for($i=0;$i<count($news_ImageList);$i++) 
     { 
      $imagedata = $news_ImageList[$i]['imagedata']; //read image_list[].imagedata  element
      $filename = $news_ImageList[$i]['fileName']; //read image_list[].fileName element
     }

});

在邮递员中,您可以将JSON对象作为行数据传递,格式为application/json在正文部分。

通过使用这个概念,任何类型的复杂数据结构都可以作为JSON对象传递给slim。它可以实现大多数数据传递目标。

答案 2 :(得分:1)

$names = $request->getParam('name');
$genders = $request->getParam('gender');
$ages = $request->getParam('age');
$persons = array();
for($i=0;$i<count($names);$i++){
        $arr['name'] = $names[$i];
        $arr['gender'] = $genders[$i];
        $arr['age'] = $ages[$i];
        array_push($persons,$arr);
}

答案 3 :(得分:0)

您可以使用

访问html表单发送的表单数据
$name=$req->getParsedBodyParam("name");