我之前从未使用过Javascript,但现在我需要在我的Symfony-Project(Symfony 1.4)中使用它,并且在添加代码以使其工作的位置存在一些问题:
我在模块“aktionLimit”中有一个模板(indexSuccess),其中我显示了类“Aktion”的Object变量的值:
<p>Value1: <?php echo $aktion->getValue1() ?></p>
<p>Value2: <?php echo $aktion->getValue2() ?></p>
<p>Value3: <?php echo $aktion->getValue3() ?></p>
<?php include_partial('form', array('form' => $form)) ?>
这是executeIndex:
$this->aktion = AktionlimitPeer::getByName($this->getUser()->getAttribute('aktion'));
$aktionParam = new Aktion();
$aktionParam->setName($this->aktion->getName());
$this->form = new AktionlimitForm(array(), array("aktion" => $aktionParam));
AktionLimitForm如下所示:
$aktionForm = new AktionForm($this->getOption('aktion'), array("limit" => true));
$this->embedForm('Aktion', $aktionForm);
$this->widgetSchema['neuerWert']= new sfWidgetFormInputText();
嵌入的AktionForm只有一个元素(一个下拉框,其中包含“Aktion”对象的唯一名称):
$this->widgetSchema['name'] = new sfWidgetFormChoice(array('choices' => AktionPeer::getTypes()),array('onchange' => '???'));
每当用户在下拉框中选择另一个“aktion”时,我想在executeIndex中加载当前对象“aktion”(由名称引用)并在indexSuccess中显示其值(值1-3)。(提交时)它导致另一个行动。)
我需要一个在onChange-Event中调用executeIndex的函数。我可能要在web / js-folder中声明该函数,这是对的吗?但是如何从表单中调用函数?我如何在JavaScript函数中调用一个动作?
我希望你理解我写的东西 - 今天我用英语解释这个问题有些困难:)有人可以帮忙吗?
答案 0 :(得分:5)
首先,考虑升级到symfony 2.
然后,如果您决定使用jquery(不错的javascript框架),则不需要在表单类型中配置它。使用jquery,您可以非常轻松地将事件绑定到元素。
$(document).ready( function() {
$('#id_of_the_form_field').change(function() {
// to get the selected value
var selected = $(this).val()
// do your magic pony stuff
});
});
要从javascript调用您的php操作,您需要向相关路径发出ajax请求。