我在一个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语句并选择要包含在视图中的形式。
答案 0 :(得分: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>
这样的事情可能会成功,我希望它有所帮助。
答案 1 :(得分:0)
能够使用AJAX解决此问题,以回发到另一个控制器操作,然后将数据返回给AJAX。仍需要弄清楚如何在动态创建所有这些子表单时提交它们。