2

このフォームの複数のインスタンスが存在する可能性があるため、フォームをページに動的にロードする必要があります。検証と保存は問題ではありませんが、コントローラーから実際のフォーム コンテンツ/マークアップを返すことができないようです。単純な値 (id: 1) でテストすると、データを正常に返すことができますが、データ型が設定されていない場合、または [Object object] の場合、実際のフォームは常に未定義として返されます。

コントローラ:

public function addPermissionFormAction()
{
    $this->_helper->viewRenderer->setNoRender();
    $this->_helper->layout->disableLayout();
    //data from ajax call is successfully received
    $username = $this->getRequest()->getParam('user');
    //...Code to get $pages...
    $form = new Pds_Wizard_SubForm_Externals($pages);

    if(!isset($form)) $form = false;
    //I have run XDebug to here and confirmed that the form is built successfully.
    echo Zend_Json::encode(array('form' => $form));
}

私の Ajax コール:

$('#get-player-permissions').click(function() {
    if($('#test-test').val().length > 0) {
        $.ajax({
        url: '/pds/external-user/add-permission-form',
        data: { user: $('#test-test').val() },
        dataType: 'json',
        contentType: "application/json",
        success: function(data){
            alert(data.form); // [Object object]
            $("#wizardContainer").html(data.form); //empty, no form content
        }
    })
    } 
});

単純な値を送信するための dataType フィールドまたは contentType フィールドを追加することさえせずにこれを試してみましたが、それらを通過させるのに問題はありませ。ただし、フォームでは、この場合は null または未定義になります。

フォームを動的にロードするより理想的な方法など、アドバイスをいただければ幸いです。私は Ajax 呼び出しを頻繁に使用するわけではないので、これが単純な間違いである場合は申し訳ありません。前もって感謝します!

4

1 に答える 1

3

この場合、「レンダリングなし」を設定することはできません。HTMLコードをフォーマットして表示するには、ビュー「add-permission-form.phtml」(または指定された別のビュー)が必要です

コントローラー:

public function addPermissionFormAction()
{
    $this->_helper->layout->disableLayout();

    //data from ajax call is successfully received
    $username = $this->getRequest()->getParam('user');
    //...Code to get $pages...
    $form = new Pds_Wizard_SubForm_Externals($pages);

    if(!isset($form)) $form = false;
    //I have run XDebug to here and confirmed that the form is built successfully.
    echo Zend_Json::encode(array('form' => $form));

    //Assign the form to a variable view
    $this->view->form = $form;
}

ビュー: add-permission-form.phtml:

<?php echo $this->form ;?>

Ajax 呼び出し:

コメントはありません。あなたのコードはクールに見えます

于 2013-01-30T21:43:11.120 に答える