基本的に、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 ページ タイプを作成して、Web サイトのユーザーに API の場所を見つけさせずに Ajax コマンドを実行しやすくしました。これは、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() を実行しようとすると失敗します。構文が間違っていることはわかっていますが、どうあるべきかわかりません。助けてくれてありがとう - 私はそれを理解できない前にこれをやった - その金曜日。