我想要爲Laravel 4的codesleeve/asset-pipeline中的需要.js.php文件,並且一直未能成功運行它。有沒有其他人有這個麻煩?在codeleeve/asset-pipeline中解析PHP javascript
問題...
我使用gettext一些翻譯字符串送入的JavaScript(如錯誤消息)。我的javascript看起來像這樣(locale.js.php),其中_e
是使用sprint從gettext轉義的字符串。
Locale.define('<?php echo $USER_LOCALE; ?>', 'Number' , {
billion: '<?php echo _e('%s billion', '{x}'); ?>'
});
在投擲正確的標題和直接調用文件時,這一切都很完美。這將輸出:
Locale.define('fr-FR', 'Number' , {
billion: 'milliard {x}'
});
在我的資產管道的配置文件,我添加了擴展.js.php
我的JavaScript的啞劇陣列,並添加過濾器:
'filters' => array(
'.js.php' => array(
new AssetPipelinePHP
),
...
其中類AssetPipelinePHP是:(我知道eval
是危險的,但我承擔)
class AssetPipelinePHP implements FilterInterface {
...
public function filterDump(AssetInterface $asset) {
$content = eval("?> " . $asset->getContent() . " <?php ");
$asset->setContent($content);
}
}
最後,在我的application.js文件我有:
//= require_tree modernizr
//= require_tree mootools
//= require_tree locale
這將正確顯示JavaScript(儘管ABOVE modernizr而不是文件的末尾),僅用於首頁加載。連續頁面加載不會顯示任何locale.js.php文件。然而,如果我根本改變了locale.js.php文件(插入一個就可以),然後它再次正確顯示一個頁面加載。