フォームを処理するカスタムプラグイン

フォームを処理するカスタムプラグインをビルドしています。私はカスタムプラグインに慣れていないし、いくつかの異なるチュートリアルを見た後、私は自分のフォームアクションに固執している。私はクラスのプロセスフォームメソッドにアクセスしたいと思いますが、これはEEで正しいのですか?もしそうなら、どうすればよいのでしょうか。

ありがとう。

class Myform {

public function __construct()
{
    $this->EE =& get_instance();
}

public function form()
{

    $form_data = array(
        "id"    => $this->EE->TMPL->form_id,
        "class" => $this->EE->TMPL->form_class,
        "action" => //process_form()
    );

    $tagdata = $this->EE->TMPL->tagdata;

    $form = $this->EE->functions->form_declaration($form_data) . $tagdata . "</form>";

    return $form;
}

public function process_form()
{
    return "testing";
}
// --------------------------------------------------------------------

/**
 * Usage
 *
 * Plugin Usage
 *
 * @access  public
 * @return  string
 */
function usage()
{
    ob_start(); 
    ?>

    Documentation will go here

    <?php
    $buffer = ob_get_contents();

    ob_end_clean(); 

    return $buffer;
}

// --------------------------------------------------------------------

} // END CLASS

0

1 答え

プラグインまたはモジュールを作成しますか?アクションはモジュールで使用されているためです。 次のクエリを使用して新しいアクションをシステムに追加することができます(通常 install 関数内)。

$sql[] = "INSERT INTO exp_actions (class, method) VALUES ('module_name', 'my_action_procedure')";

特定のメソッドのアクションIDを取得する方法:

 $form_data = array(
        "id"    => $this->EE->TMPL->fetch_param('form_id',''),
        "class" => $this->EE->TMPL->fetch_param('form_class',''),
        "action" => ee()->functions->fetch_action_id('module_name', 'process_form');
    );

モジュールを開発したくない場合は、ユーザーのオプションを与えて、別のテンプレート名を処理フォームのベースとして追加する

{ext:myform process_uri="home/process" form_id="my-form" form_class="super-form-class"}

home/process

{ext:my_plugin:process_form}
2
追加された
@ Bungdaddy - データのリダイレクトはどのように進んだのですか?私もそれをしたいです。
追加された 著者 Brad Tutterow,
$ actionID = ee() - > functions-> fetch_action_id( 、 'process_form');カスタムアクティブレコードクエリより優れています。
追加された 著者 Owen,
同意する。常にこれについて忘れてしまった:)
追加された 著者 Nikos Steiakakis,
モジュールとしての再構築、私に追いつきましょう、私はフォローアップします
追加された 著者 Ray Mitchell,
@MaxLazar - モジュールの提案に感謝します。成功しました!私はあなたの答えを受け入れるでしょう。もう1つ質問がありますが、現在、成功した投稿の後に新しい質問をするように伝えます。デフォルトのメッセージを使用しています$ this-> EE-> output-> show_message($ data); 代わりに$ dataを新しいページにリダイレクトするか、タグを設定する必要がありますか?ありがとう
追加された 著者 Ray Mitchell,