最后我在深度谷歌搜索后找到了答案。感谢用户Hirnhamster,http: //forums.recessframework.org/ 。
解决方案
解决方案 - 与找到真正的问题相比 - 相当容易:
一、步骤:
在凹槽/凹槽/框架中打开文件 DefaultPolicy.class.php。转到方法预处理(..)。添加行 $this->reparameterizeForFormat($request); 作为返回前的最后一个命令。该函数现在应该如下所示:
<?php
public function preprocess(Request &$request) {
$this->getHttpMethodFromPost($request);
$this->forceFormatFromResourceString($request);
$this->reparameterizeForFormat($request);
return $request;
}
?>
2. 步骤
在同一个文件中,转到方法 forceFormatFromResourceString(...)。更改行 $format = substr($lastPart, $lastDotPosition + 1); 到 $format = strtolower(substr($lastPart, $lastDotPosition + 1)); 添加行 $request->format = $format; if($format !== '') { 下面的函数现在应该如下所示:
<?php
protected function forceFormatFromResourceString(Request &$request) {
$lastPartIndex = count($request->resourceParts) - 1;
if($lastPartIndex < 0) return $request;
$lastPart = $request->resourceParts[$lastPartIndex];
$lastDotPosition = strrpos($lastPart, Library::dotSeparator);
if($lastDotPosition !== false) {
$format = strtolower(substr($lastPart, $lastDotPosition + 1));
if($format !== '') {
$request->format = $format;
$mime = MimeTypes::preferredMimeTypeFor($format);
if($mime !== false) {
$request->accepts->forceFormat($format);
$request->setResource(substr($request->resource, 0, strrpos($request->resource, Library::dotSeparator)));
}
}
}
return $request;
}
?>
3. 步骤
在同一个文件中,转到方法 reparameterizeForFormat(...)。(惊讶于这个功能已经存在:P)。将 Format::JSON 更改为 "json" 并将 Format::XML 更改为 "xml" 该函数现在应如下所示:
<?php
protected function reparameterizeForFormat(Request &$request) {
if($request->format == "json") {
$method = strtolower($request->method);
$request->$method = json_decode($request->input, true);
} else if ($request->format == "xml") {
// TODO: XML reparameterization in request transformer
}
return $request;
}
?>
4. 步骤
你完成了。
详细解决方案:
http://webcache.googleusercontent.com/search?q=cache:http://forums.recessframework.org/topic/189-json-request-doesnt-insert-values-in-v02/