0

Ajax を使用して、自分のページから ExpressonEngine タグを含む PHP スクリプトを実行しようとしています。ドキュメントに従ってPHPスクリプトをセットアップしましたが、実際にはPHPスクリプトで関数を呼び出すことができないようです。私は何かが欠けているに違いない。

私のアヤックス:

function createNew(obj) {
    $.ajax({
    url: 'createNew.php',
       data: "call=create_new",
    type: 'GET',
       success: function(data){
        obj.innerHTML = data;
    }
    });
}

私のPHP:

<?php

if($_SERVER['REQUEST_METHOD']=="GET") {
$function = $_GET['call'];
if(function_exists($function)) {        
    call_user_func($function);
} else {
   echo 'Function Not Exists!!' . $function;

}
}

class CreateNewEntry {
    public function create_new() {
        $this->EE->load->library('api');
        $this->EE->api->instantiate('channel_entries');
        $this->EE->api->instantiate('channel_fields');
        $channel_id = $this->channel_id;

        $data = array(
                'title'        => 'Ny entry',
             'entry_date'  => time(),
                 'ping_servers'=> array(),
                'url_title'    => 'new-entry',
                'field_id_2'   => '5.0',
                'field_id_3'   => '10%',
                'field_id_4'   => 'Author',
             'field_id_5'   => '4x4',
             'field_id_6'   => '<p>Some text</p>'
        );

        if ($this->EE->api_channel_entries->submit_new_entry($channel_id, $data) === FALSE)
            { 
            $errors = $this->EE->api_channel_entries->errors;
             echo $errors;
          }     
        echo 'Success';

    }
}
?>

最初はクラスや関数を使わないようにしました。しかし、クラス内の関数にある必要があるように見える $this でエラーが発生しました。だから私はそれをしました。しかし、それはまだ機能していません。何か案は?

4

1 に答える 1

2

create_newクラスメソッドなので、実行するだけでは使えませんcall_user_func( $function)

私には2つの解決策があります:

$obj = new CreateNewEntry();
call_user_func(aray($obj, $function));

また

call_user_func("CreateNewEntry::".$function);

(2 番目の方法では、create_newメソッドとして宣言されたメソッドが必要staticです。

于 2013-02-20T08:12:47.487 に答える