2

我正在使用 cakephp2.2 版本,我遵循了 url http://book.cakephp.org/2.0/en/development/rest.html上提供的文档

现在在编辑方法中,edit.ctp包含要放置的编辑表单是什么views/receip/xml/.

当我将编辑表单放入Views/Receip/xml/文件夹时,会生成 xml 类型的表单:

每个人都为 index 方法代码编写代码,但没有人为 edit 方法代码编写代码。有人可以指导如何编写编辑方法,所以如果我发送recipes/edit/1.xml我会得到填充数据的 html 表单?

4

1 回答 1

1

XML 视图应该看起来非常接近示例中的索引视图,除了它吐出的变量。

我假设您使用与示例中相同的编辑功能:

public function edit($id) {
    $this->Recipe->id = $id;
    if ($this->Recipe->save($this->request->data)) {
        $message = 'Saved';
    } else {
        $message = 'Error';
    }
    $this->set(array(
        'message' => $message,
        '_serialize' => array('message')
    ));
}

正如书中所说:

您还可以使用 CakePHP 内置的 JSON 和 XML 视图轻松制作 JSON 视图。通过使用内置的 XmlView,我们可以定义一个 _serialize 视图变量。这个特殊的视图变量用于定义 XmlView 应该序列化为 XML 的视图变量。

但是,如果您不使用内置视图,则可以像这样在视图中手动指定 XML(确保将_serialize视图变量从edit函数中取出,这样它就不会自动生成您的 XML)。

视图应如下所示:

$xml = Xml::fromArray(array('message' => $message));
echo $xml->asXML();

这将输出一个非常基本的 XML 文档,其中包含成功消息作为节点。您可以随意添加更多信息。例如,如果更新失败,您应该通过在 XML 响应中包含验证错误来告诉您的用户哪些内容未验证。

于 2012-12-12T15:53:32.903 回答