2013-02-20 42 views
0

我正在嘗試使用Ajax在我的頁面上運行帶有ExpressonEngine標籤的PHP腳本。 我已經根據文檔設置了PHP腳本,但我似乎無法真正調用PHP腳本中的函數。我肯定錯過了什麼。表達式引擎 - PHP - 無法運行功能

我的Ajax:

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上遇到了錯誤,這似乎需要放在類中的函數中。所以我做到了。但它仍然無法正常工作。有任何想法嗎?

回答

2

create_new是一種類方法,因此您不能只使用call_user_func($function)來執行它。

我有2個解決方案:!

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

OR

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

(第2路需要聲明爲static方法create_new方法

+0

神奇:)謝謝! :)所以我需要創建一個新的類的實例。然後運行該功能。我懂了 – 2013-02-20 08:28:51