【发布时间】:2017-08-05 06:19:26
【问题描述】:
我正在尝试在我的 php 项目中为可动手做的插件实现我自己的渲染器。 所以插件的参数集准备为php数组:
$options = [
'data' => $orders,
'columns' => [
[
'data' => 'email',
'renderer' =>
// Heredoc goes here
<<<JAVASCRIPT
function(value) {
console.log(value);
}
JAVASCRIPT
],
...
]
];
然后将其作为参数传递给插件:
$this->registerJs('hot = new Handsontable("mydiv", ' . json_encode($options) . ')');
因此,当呈现 html 时,我会看到:
hot = new Handsontable("mydiv", {
'data': ...,
'columns': [
{
'data': 'email',
// Here is the problem!
'renderer': 'function(value) { \n\r console.log(value) \n\r }'
},
...
]
});
问题是我不能将此函数作为闭包传递,只能作为引号中的文本传递。
有可能吗?
【问题讨论】:
-
here-doc 始终是一个字符串。没有办法在 JSON 中编码函数。
-
@Barmar 我应该在之前定义函数并将其名称作为参数传递吗?
-
类似的东西,但是使用
json_encode()没有简单的方法来获得它。你能在registerJs()里放多条语句吗? -
@Barmar 实际上传递了一些标志: JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK
-
@Barmar registerJs 是 Yii2 查看函数
标签: javascript php yii2 heredoc