Zend form setAttribs with json_encode

Zend form setAttribs with json_encode

本文关键字:encode json with form setAttribs Zend      更新时间:2023-09-26

我有一个zend form select元素,它调用javascript函数onchange。如下:

$element->setAttribs(array( 'onchange' => 'toggleSelect(this.value, ' . json_encode($this->_testData) . ')'));
问题是,ZEND onchange和json_encode都使用双引号,所以它变成了:
<select onchange="toggleSelect(1, {"foo" : "bar"})"></select>

抱怨无效的属性id。我认为这是双引号导致的问题,但不知道如何解决。

Try

$element->setAttribs(array( 'onchange' => 'toggleSelect(this.value, ' . htmlspecialchars(json_encode($this->_testData)) . ')'));
使用htmlspecialchars,你应该以 结束
<select onchange="toggleSelect(1, {&quot;foo&quot; : &quot;bar&quot;})"></select>

应该是有效的html,并且仍然将您的参数解释为有效的JSON对象。