フォームで解析されない条件文

私はモジュールを介してフォームを作成しています。これは、挿入と更新の両方に使用したいものです。挿入後、以前に入力した値を編集するオプションがあります。私が遭遇する問題は、アップデートにあります。

この関数は、挿入または更新

public function form()
{
    session_start();
    $tagdata     = $this->EE->TMPL->tagdata;

    if(isset($_SESSION['id'])){
        $variables   = array();
        $variables[] = $_SESSION['tags'];

        return self::buildForm('updateForm', $tagdata, $variables);

    }

    return self::buildForm('addDonation', $tagdata);
}

この関数はフォームの実際のビルドを処理しますが

public function buildForm($method, $tagdata, $variables = FALSE)
{
    $hidden_fields = array(
        'ACT' =>  $this->EE->functions->fetch_action_id('Meal', $method)
    );

    if($variables != FALSE){

        $conditionals = $this->EE->TMPL->simple_conditionals($tagdata, $variables);
        $conditionals = $this->EE->TMPL->parse_variables_row($conditionals, $variables);

        print_r($conditionals);

        $content = $this->EE->TMPL->parse_globals($this->EE->TMPL->final_template);

    }

    //Build an array with the form data
    $form_data = array(
        "id"            => $this->EE->TMPL->form_id,
        "class"         => $this->EE->TMPL->form_class,
        'hidden_fields' => $hidden_fields
    );

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

    return $form;
}

現在、出力は {if FirstName!= であり、条件内の{FirstName}は解析されていません。

どのような助けが大いに感謝!

1

1 答え

私はこれを必要以上に複雑にしていると思います。これで十分です:

if($variables != FALSE)
{
    $content = $this->EE->TMPL->parse_globals(
        $this->EE->TMPL->parse_variables($tagdata, $variables)//preps then runs parse_variables_row()    
    );
}
2
追加された
それを印刷するだけではなく、テンプレートで使用してください。条件文が解析されるためには、テンプレートパーサはまだそれを実行する必要があります。この時点では、実際に解析されたではなく、事前準備されています。
追加された 著者 Ryan Fox,
それは正しいですが、あなたのアドオンコードの中にそれを印刷しても、あなたが期待しているものは得られません。最終出力は、フォームを表示するフロントエンドテンプレートが読み込まれたときに発生するテンプレートパーサーによって処理される必要があります。
追加された 著者 Ryan Fox,
助けてくれてありがとう。あなたの例から$ contentをプリントアウトしました。条件付き{if FirstName!= ....は返されません。ここにテンプレート value = "{FirstName!=" "} {FirstName} {/ if} のマークアップがあります。
追加された 著者 Ray Mitchell,
私は正しくこれを使ってはいけません。ここでは、私のフォームにコンテンツを戻そうとしていますが、ここでは解析されていません。 $ form = $ this-> EE-> functions-> form_declaration($ form_data)です。 $ content。 "</form>";
追加された 著者 Ray Mitchell,
助けてくれてありがとう。 Ellislabsの人たちは物事を整理しました。あなたの提案に単純なバリエーションがあった。 $ this-> EE-> TMPL-> parse_variables_row の代わりに $ this-> EE-> TMPL-> parse_variables - > EE-> TMPL-> parse_variables_row - 回答を更新したい場合は、私は受け入れていただきます。
追加された 著者 Ray Mitchell,