まずは、PHPで本当に「新」です。PHPコードが関数内になければエラーをスローする
私はPrestashopモジュールMinic MailChimpを変更しています。いくつかの機能を開発した後、私はAJAX経由でそれらを呼び出そうとしました。
これは、これはすべてのCLASS(MinicMailchimp)
public function addList(){
$settings = array();
if(!empty($_POST['id_field']) || !empty($_POST['name_field']) || $_POST['list_type'] == 0){
$this->message = array('text' => $this->l('Fill all the fields.'), 'type' => 'error');
return;
}
$settings = array(
'list_number' => $_POST['list_sendy']+1,
'id_field' => $_POST['id_field'],
'name_field' => $_POST['name_field'],
'list_type' => $_POST['list_type']
);
$list_name = "MINIC_MAILCHIMP_LIST".$settings['list_number'];
Configuration::updateValue($list_name, serialize($settings));
}
内であり、これはどのように考えると、これはPHP側である...私はPHPの機能とどのように相互作用するか
$('#btn_exec_new_list').on('click', function(){
id_field = $('#id_field').val();
name_field = $('#name_field').val();
list_type = $('#list_type option:selected').val();
$.ajax({
type: 'POST',
url: "minicmailchimp.php",
data: {id_field : id_field, name_field : name_field, list_type : list_type, add_list : '1'},
dataType: 'json',
success: function(result){
alert(result);
}});
});
です私はそれを呼び出さなければならないことを見てきました(これは上記の関数と同じクラスにも含まれています)。関数外に書くコードは構文エラーをスローします。
if(isset($_POST['add_list'])){
addList();
$this->addList(); // Not sure which one use (I think it might be this one)
}
エラー:
[PrestaShop] Fatal error in module minicmailchimp: syntax error, unexpected 'if' (T_IF), expecting function (T_FUNCTION)
私も関数にそれを作ると、クラスの外にそれを呼び出すしようとしましたが、それは単に動作しない、投げるとエコーしてみましたAJAX経由で印刷しますが、答えはまったくありません。それはAJAXの成功の部分にさえしていません。
class MinicMailchimp extends Module{
public function executeFunction(){
if(isset($_POST['add_list'])){
echo "response from php";
addList();
}
}
}
call_user_func("executeFunction");
私はクラスについて十分な知識がなく、関数の外にPHPコードを書くことができないという結論に達しました。しかし、それは別のものかもしれません。
ありがとうございます。これは十分な情報ですので、私の最初の投稿です。
エラーの説明を追加すると便利です。クラスはプロパティと関数の定義のみを保持できますが、クラスの内部ではあるが関数の外にある実行可能なコードを持つことはできません。しかし、あなたはクラスの定義の外からそれを実行することができます。 – syck
あなたはOOPについて何かを学ぶ必要があります。 '$ this'は現在のオブジェクトインスタンスを参照し、' class'の外では意味を持ちません。私たちがここで何を答えているのかはっきりしていませんが、確かにOOPを最初から教えることはできません。 – deceze
呼び出される関数はどこにありますか?クラス内にも?また、質問を編集してエラーを含める必要があります。 – frz3993