2

每当相关下拉列表发生更改时,我都会尝试从我的数据库中填写具有特定值的表单字段,但我不明白为什么:

  • 我可以成功地使用下拉列表的 js()->val() 来设置我要填充的字段的 val() ($price)
  • 但是每当我在查询中或在我为故障排除目的添加的警报中使用 js()->val() 时,它都会输出附加了“.val()”或类似内容的字段名称引用字符串...

我知道这是一个菜鸟问题,但我已经看过几种方法并尝试了不同的方法,但我无法让它发挥作用。如果我在下面的查询中硬编码“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()
    // ));
4

1 回答 1

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 以供其执行(因此 ->execute() 方法)

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

于 2013-09-06T23:58:32.610 回答