如果我在 Ajax_Controller 中对 URL 进行硬编码,基本上一切正常,但我希望它从我创建的 CMS 字段中访问 URL。
提前致谢。(当我不关闭大括号时请忽略 - 只是试图有效地复制/粘贴)
在 /mysite/_config.php 我创建了一个自定义配置:
Object::add_extension('SiteConfig', 'CustomSiteConfig');
在 /mysite/code/CustomSiteConfig.php 中,我添加了一个用于存储 URL 的字段:
class CustomSiteConfig extends DataObjectDecorator {
function extraStatics() {
return array(
'db' => array(
'COJsonPath' => 'Text'
)
);
}
public function updateCMSFields(FieldSet &$fields) {
$fields->addFieldToTab("Root.CO", new TextField("COJsonPath", "CO JSON URL"));
}
public function getCOJsonPath(){
return $SiteConfig.COJsonPath;
}
这成功地在 CMS 的主父项中创建了一个名为“CO”的选项卡和一个名为“CO JSON URL”的字段。我登录到我的 CMS 并将http://api.localhost/mymethod/保存到该字段。
现在我创建了一个 Ajax 页面类型来方便运行 Ajax 命令,而不会让网站用户找到我的 API 所在的位置,而且因为 jQuery Ajax 不像 XSS(跨站点脚本)。
在 /mysite/code/Ajax.php 中:
class Ajax extends Page {
static $db = array(
);
static $has_one = array(
);
function getCMSFields()
{
$fields = parent::getCMSFields();
return $fields;
}
}
class Ajax_Controller extends Page_Controller {
public function getCO()
{
$buffer = self::createHttpRequest("http://api.localhost/mymethod/");
//$buffer = self::createHttpRequest($CustomSiteConfig::getCOJsonPath());
return $buffer;
}
此代码有效,但是当我尝试使用您看到的注释行执行我的 createHttpRequest() 时,它失败了。我知道我的语法是错误的,我只是不知道它应该是什么。感谢您的帮助-在我无法弄清楚之前我已经完成了这项工作-星期五。