首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回格式错误的CakePHP

返回格式错误的CakePHP
EN

Stack Overflow用户
提问于 2012-01-30 14:39:15
回答 2查看 1.2K关注 0票数 0

基本上,我试图使用示例代码将Google订单处理(级别2集成)添加到CakePHP应用程序中。

我可以成功地创建手推车并接收从Google发送到我的应用程序的通知,但是它不能正确地承认这些。

在google代码中,执行这个回显的函数如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?><notification-acknowledgment xmlns="http://checkout.google.com/schema/2" serial-number="119963104284921-00001-7" />

不过,收到的代码如下:

代码语言:javascript
复制
<?xml version=1.0 encoding=UTF-8 ?><notification-acknowledgment xmlns="http://checkout.google.com/schema/2" serial-number=119963104284921-00001-7 />

我不知道是什么导致了这一点,我认为这与Cake没有任何关系,我已经禁用了PHP短标签,所以我可以使用内联XML,但这并没有什么区别。

如果我从字符串中删除了第一个<,那么echo函数的其余代码都是正确的,把它留在里面,它就会刹车(很明显,这也适用于?和关闭>符号,我只是不能同时拥有所有这些代码!)

我已经能够复制这一点,试图删除在谷歌代码中使用下面的功能正在做的任何看不见的东西。它做完全相同的事情,但包含在一个(蛋糕)控制器和硬编码变量。

代码语言:javascript
复制
public function blank($tags = null) {
    $schema = 'http://checkout.google.com/schema/2';
    $serial = '119963104284921-00001-7';
    if ($tags != null) {
        $acknowledgment = '<?xml version="1.0" encoding="UTF-8" ?'.'>'.'<notification-acknowledgment xmlns="'.$schema.' '.'serial-number="'.$serial.'" />';
    } else {
        $acknowledgment = '?xml version="1.0" encoding="UTF-8" ?>'.'<notification-acknowledgment xmlns="'.$schema.' '.'serial-number="'.$serial.'" />';
    }
    $this->set('_ack', $acknowledgment);
}

IF语句用于显示<符号所产生的差异。

不使用任何内容调用它($tags == null)将提供以下输出:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?><notification-acknowledgment xmlns="http://checkout.google.com/schema/2" serial-number="119963104284921-00001-7" />

来源

使用任何其他值($tags != null)调用它将提供以下输出:

代码语言:javascript
复制
<?xml version=1.0 encoding=UTF-8 ?><notification-acknowledgment xmlns="http://checkout.google.com/schema/2" serial-number=119963104284921-00001-7 />

来源

我的问题(终于!)为什么会发生这种事?如何让它正确地输出XML?

对不起,如果我错过了一些非常明显的事情,但我宁愿让它在这里指出,也不愿在今后的一天里无所事事!

EN

回答 2

Stack Overflow用户

发布于 2012-01-30 15:33:21

这个“问题”与PHP解释器有关。

有解决办法,但一切都在看,而不是在被控制的人。

代码语言:javascript
复制
//var
$questionmark = "?";
echo "<".$questionmark."xml version=\"1.0\" encoding=\"utf-8\"".$questionmark.">";
// separate
echo '<' . '?xml version="1.0" encoding="utf-8"?' . '>';
票数 0
EN

Stack Overflow用户

发布于 2012-01-30 19:32:10

一些XML解析器不允许用大写字母指定编码(例如,UTF-8不正确)。

尝试将编码更改为"utf-8“,以查看是否修复了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9065544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档