ATK4 - 根据相关下拉列表中的更改更新表单字段值

时间:2013-09-06 10:27:39

标签: jquery forms atk4

每当相关的下拉列表发生变化而我不明白为什么时,我会尝试从我的数据库填写一个具有特定值的表单字段:

  • 我可以成功使用我的下拉列表中的js() - > val()设置我正在尝试填充的字段的val()($ price)
  • 但每当我在我的查询中使用js() - > val()或在我为故障排除目的而添加的警报中,它都会输出字段名称引用字符串,附加'.val()'或者类似的东西。

我知道这是一个noob问题,但我已经看了几个方法,并尝试了不同的方法,我无法让它工作。 如果我在下面的查询中硬编码'id'的值,它确实按预期工作,我只需要能够将查询传递给适当的值......

$form = $this->add('Form');
$product = $form->addField('dropdown', 'name');
$product->setModel('Product');
$price = $form->addField('line', 'price_per');
$product->js('change', $price->js()
    ->val($product->js()->val())
    ->univ()
    ->alert('ID is : ' . $product->js()->val()));   

// $product->js('change', $price->js()->val(
    // $this->api->db->dsql() //->expr(2+2)
    // ->debug()
    // ->table('product')
    // ->field('price_per')
    // ->where('id',$product->js()->val())
    // ->getOne()
    // ));

1 个答案:

答案 0 :(得分:1)

你的问题在这里:

->alert('ID is : ' . $product->js()->val()));  

你必须记住,js()会生成一个PHP链,然后可以将其转换为javascript。如果你用字符串连接它,那么它就变成了一个字符串,因此成了警报。试试这个:

->alert($product->js()->val()));  

它应该可以正常工作。

您可以在UNIV链中添加必要的连接方法。您也可以使用js(null,'2 + 4')来注入任何javascript代码,但要小心,因为它没有被转义。

<强> AJAX

当javascript依赖于服务器端算法时,这是一种技术。 JavaScript将请求发送到后端。 Agile Toolkit使用一种名为AJAXEC(Ajax + Exec)的技术。它会向服务器发送请求,但是服务器会响应大量的javascript来执行它(因此 - &gt; execute()方法)

有几种方法可以使用Agile Toolkit包装此功能,但您可能应首先查看基础知识: