【发布时间】:2011-11-20 04:35:09
【问题描述】:
我正在使用 CakePhp 构建一个与 Linkedin API 交互的应用程序。我有一个简单的页面,它在 GET 变量中给出了一个linkedin 成员 ID,在会话变量中给出了应用程序身份验证令牌。页面控制器应该对 API 进行 cURL 调用并设置 $connection 变量,完成控制器代码,然后显示 *.CTP。
但是,发生了什么。控制器执行一次没有问题,然后执行 *.CTP 文件没有问题。然后再次执行控制器,这次没有成功从linkedin API中提取数据,然后再次执行*.CTP文件,在调试日志中创建各种错误“通知”。奇怪的是,即使调试日志显示 CAKE 无法设置 $connection 变量,基于该变量的数据在页面渲染时仍会正确显示。
我使用了一个 Debugger::Log('xxx') 标志来指示何时执行控制器和 *.CTP 的开始和结束。这是页面上一次刷新的调试日志
2011-11-20 04:16:23 Debug: "START controller function"
2011-11-20 04:16:24 Debug: "End controller function"
2011-11-20 04:16:24 Debug: "START the .ctp"
2011-11-20 04:16:24 Debug: "END the .ctp"
2011-11-20 04:16:25 Debug: "START controller function"
2011-11-20 04:16:26 Debug: Notice (8): Undefined variable: connection in [C:\wamp\www\ta\app\controllers\reviews_controller.php, line 100]
2011-11-20 04:16:26 Debug: "End controller function"
2011-11-20 04:16:26 Debug: "START the .ctp"
2011-11-20 04:16:26 Debug: Notice (8): Trying to get property of non-object in [C:\wamp\www\ta\app\views\reviews\write_review.ctp, line 7]
2011-11-20 04:16:26 Debug: Notice (8): Trying to get property of non-object in [C:\wamp\www\ta\app\views\reviews\write_review.ctp, line 36]
2011-11-20 04:16:26 Debug: Notice (8): Trying to get property of non-object in [C:\wamp\www\ta\app\views\reviews\write_review.ctp, line 41]
2011-11-20 04:16:26 Debug: Notice (8): Trying to get property of non-object in [C:\wamp\www\ta\app\views\reviews\write_review.ctp, line 43]
2011-11-20 04:16:26 Debug: "END the .ctp"
页面实际上渲染得很好。我只是想了解为什么 CAKE 会运行 *.CTP 文件两次(它没有重定向)并在调试文件中创建所有错误通知。我认为 Cake 运行控制器功能,并且只有当控制器到达末尾时才运行 *.CTP 文件一次?有人知道会发生什么吗?
谢谢!
【问题讨论】: