我想要为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文件(插入一个就可以),然后它再次正确显示一个页面加载。