0

1 つの DIV に選択ドロップダウン メニューがあり、ユーザーに選択してもらいたいのですが、それが下にある場合、選択した選択に基づいて下の DIV に別のフォームが表示されます。投稿(ページ更新)せずに作りたい。

これが私の /views/scripts/postjob/index.phtml です

<div id="post_job">
<?php echo $this->form->setAction($this->url()); ?>
</div>
<div id="display">

</div>

コントローラーはこちら

class PostJobController extends Zend_Controller_Action
{

public function init()
{
    /* Initialize action controller here */
}

public function indexAction()
{
    $form = new Application_Form_DivForm();

    $business = new Application_Form_BusinessCardForm();
    $calendar = new Application_Form_CalendarForm();
    $brochure = new Application_Form_BrochureForm();
    $this->view->form=$form;       

}


}

ここに私の /forms/DivForm があります

class Application_Form_DivForm extends Zend_Form
{
public function init()
{

    $this->setName("Business Card");
    $this->setMethod('post');   

    $this->addElement('select','type',
        array(
        'label'        => 'Post Job (select)',
        'onchange'      => 'showForm(this.value)',
        'value0'        => 'Select',
        'multiOptions' => array(
        'value1'    => 'Business Cards',
        'value2'   => 'Calendars',
        'value3'  => 'Brochures',
    ),
)
);


}

}

これを行うには複数の方法があると確信していますが、簡単なものを見つけようとしています。おそらく、変数を index.phtml からコントローラーに戻すだけで、if ステートメントを実行して、ビューに含めるフォームを選択できます。

4

2 に答える 2

0

AJAXを使用してこの問題を解決し、別のコントローラーアクションにポストバックしてから、データをAJAXに戻すことができました。これらすべてが動的に作成されたときに、これらすべてのサブフォームを送信する方法を理解する必要があります。

于 2012-08-30T22:01:49.970 に答える
0

これは実際、PHP で行うのは非常に簡単で、ZF アクションではさらに簡単です (私はまだ JS を行っていません)。私はこの種のことを PHP で頻繁に行っています (更新を気にしないでください)。

コントローラー アクションでこのちょっとした魔法を実現するには、単純なスイッチを使用します。

public function IndexAction()
    {
        $form = new Application_Form_DivForm();
        $form->setAction('/postjob/index');
        $this->view->form=$form;

        //put in the if->isPost() and if->isValid() as needed.
        switch ($form->getValue('type')) {
            case ('Business Cards'):
                $this->view->form2 = new Application_Form_BusinessCardForm();
                break;
            case ('Calendars'):
                $this->view->form2 = new Application_Form_CalendarForm();
                break;
             case ('Brochures'):
                $this->view->form2 = new Application_Form_BrochureForm();
                break;
            default:
                $this->view->form2 = '';
                break;
        }
    }

あなたの見解は次のようになります:

<div id="post_job">
    <?php echo $this->form ?>
</div>
<div id="display">
    <?php if (!empty($this->form2)): ?>
    <?php echo $this->form2 ?>
    <?php endif ?>
</div>

このようなことがうまくいくかもしれません。

于 2012-08-28T05:33:32.280 に答える