每当相关的下拉列表发生变化而我不明白为什么时,我会尝试从我的数据库填写一个具有特定值的表单字段:
我知道这是一个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()
// ));
答案 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包装此功能,但您可能应首先查看基础知识: