我想HTML編碼將用作谷歌地圖工具提示的字符串。在Yii中使用PHP heredoc函數調用的返回值?
$cs = Yii::app()->getClientScript();
$cs->registerScript('someID', <<<EOD
function mapsetup() {
//...
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
// works:
title: '$model->name'
// doesn't work:
title: '{${CHtml::encode($model->name)}}'
});
// ...
}
mapsetup();
EOD
, CClientScript::POS_LOAD
);
如果我用線title: '$model->name'
,它會導致以下擴展:
title: 'Some Name'
如果我改用線title: '{${CHtml::encode($model->name)}}'
,它會導致以下擴展:
title: ''
CHtml::encode
在同一頁面的其他地方工作正常,但它似乎並沒有在PHP heredoc中工作。
- 我甚至需要將HTML編碼的javascript字符串數據呈現給瀏覽器嗎?
- 如何獲得CHtml :: encode在heredoc中工作?
關於變量在前面的語句只是編碼名字好一點。 – User
我之前讀過參考文獻,好像可以調用函數,例如'echo「這是通過getName()的返回值命名的var的值:{$ {getName()}}」;'I不知道問題是否在我的情況下,我的函數有一個參數,我需要在調用函數之前展開函數參數。 – User
是的,這是因爲CHtml :: method使用輸入參數,這就是爲什麼插值是錯誤的。所以之前只需將其轉義出來,如果需要的話,它會自動從js中逃脫出來。 (不確定只是看到registerScript的更多信息)。 – Elkan