如何为 moodle 中的嵌套网络服务创建正确的 return 函数

How to create the right return function for a nested webservice in moodle

我正在尝试在我的 Moodle 网络服务中构建正确的响应函数。 我打印了我的 json 响应的 php 结构:

[
   {
      "name":"Quiz",
      "id":"1",
      "theme":"green",
      "quizzes":[
         {
            "type":"single-select-item",
            "question":"Question example 1?",
            "options":[
               "<p>answer1<br><\/p>",
               "<p>answer2<br><\/p>",
               "<p>answer3<br><\/p>",
               "<p>answer4<br><\/p>"
            ],
            "answer":"1"
         },
         {
            "type":"single-select-item",
            "question":"<p>Question example 1?<br><\/p>",
            "options":[
               "<p>answer1<br><\/p>",
               "<p>answer2<br><\/p>",
               "<p>answer3<br><\/p>",
               "<p>answer4<br><\/p>"
            ],
            "answer":"2"
         }
      ]
   }
]

但我无法为 moodle 网络服务编写正确的 return 函数。

我写了return函数如下

        return new external_multiple_structure(
        new external_single_structure(
            array(
                "name"=>  new external_value(PARAM_TEXT, 'quiz name'),
                "id"=>  new external_value(PARAM_TEXT, 'quiz id'),
                "theme"=>  new external_value(PARAM_TEXT, 'quiz theme'),
                "quizzes" => new external_multiple_structure(
                                new external_single_structure(
                                    array(
                                        "type" =>  new external_value(PARAM_TEXT, 'answer type'),
                                        "question" => new external_value(PARAM_TEXT, 'question'),
                                        "options" =>  new external_multiple_structure(
                                                            new external_value(PARAM_TEXT, 'options')
                                                      ),
                                        "answer" => new external_value(PARAM_TEXT, 'right answer')
                                    )
                                )

                            )


            )
        )
    );

但我仍然收到以下异常。我的 return 函数有什么问题?

{"exception":"invalid_response_exception","errorcode":"invalidresponse","message":"Invalid response value detected"}

有什么建议吗? 谢谢

我刚发现问题!! return 函数是正确的,但我收到异常,因为结构中的某些文本包含 HTML 标签,如和转义字符,这些字符会破坏 return 函数组合。 最后我用这个 PARAM_RAW 代替了 PARAM_TEXT 并且效果很好!