0

我以前从未使用过 Javascript,但现在我在 Symfony-Project (Symfony 1.4) 中需要它,并且在添加代码以使其正常工作时遇到了一些问题:

我在模块“aktionLimit”中有一个模板(indexSuccess),其中显示了“Aktion”类的对象的变量值:

<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)) ?>

这是执行索引:

$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 文件夹中声明该函数,对吗?但是如何从表单中调用函数呢?以及如何在 JavaScript 函数中调用动作?

我希望你能理解我写的东西——今天我很难用英语解释这个问题:)有人可以帮忙吗?

4

1 回答 1

6

首先,考虑升级到 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 请求。

于 2013-05-03T09:41:50.123 回答