CakePHP2.X:如何在使用RESTful Web服务时编写edit方法

时间:2012-12-12 06:47:16

标签: web-services cakephp rest

我正在使用cakephp2.2版本,我按照网址http://book.cakephp.org/2.0/en/development/rest.html提供的文档

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

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

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

1 个答案:

答案 0 :(得分: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和JSON轻松制作JSON视图   XML视图。通过使用内置的XmlView,我们可以定义一个_serialize   查看变量。此特殊视图变量用于定义哪个视图   变量XmlView应序列化为XML。

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

视图应如下所示:

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

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