在Joomla管理员组件

时间:2017-11-06 21:40:07

标签: php ajax curl joomla

我在Joomla中构建了一个具有多个视图的管理员组件。一个视图'recap'使用AJAX调用以'raw'格式查看'详细信息'并将HTML插入到页面中(效果很好)。我现在有一个'pdf'格式的视图'recap',我希望用'raw'格式从视图'details'获取相同的内容。我有一个成功的PDF版“Hello World”,但无法确定如何使用PHP获取“详细信息”视图并填写PDF。

我尝试了以下内容:

$this->loadTemplate('details');

哪个失败,因为我无法指定格式'raw',Joomla错误:找不到布局default_details。

file_get_contents('same url as successful AJAX call');

哪个失败并显示错误日志:无法打开流:HTTP请求失败! HTTP / 1.1 403禁止。使用与curl相同的策略也会导致身份验证失败。我知道我可以通过curl调用传递身份验证详细信息,但似乎我只能获取当前用户的用户名和哈希密码。我想我可以为具有访问权限但似乎不安全的用户的凭据进行硬编码。

此时,我只能考虑复制详细的default.php中的所有代码,并利用其模型来获取数据,但是我的优秀程序员正在尖叫“不要!!!”。

1 个答案:

答案 0 :(得分:0)

据我了解您的问题,您希望同时为页面提供HTML和PDF编码。 HTML视图使用客户端AJAX从其他视图加载数据并将其显示在页面上。这不适用于PDF视图,因为PDF文件需要在服务器端呈现。

file_get_contents()方法没有意义,您尝试使用动态内容(而不是文件系统中保存的静态文件)呈现PDF文件。

您可以进行调用以使其他视图包含在您的PHP代码中,而不是在客户端执行。这样做的方法取决于另一个视图是组件还是模块。