本文整理汇总了PHP中Assetic\Asset\FileAsset::ensureFilter方法的典型用法代码示例。如果您正苦于以下问题:PHP FileAsset::ensureFilter方法的具体用法?PHP FileAsset::ensureFilter怎么用?PHP FileAsset::ensureFilter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Assetic\Asset\FileAsset
的用法示例。
在下文中一共展示了FileAsset::ensureFilter方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testImport
/**
* @dataProvider getFilters
*/
public function testImport($filter1, $filter2)
{
$asset = new FileAsset(__DIR__ . '/fixtures/cssimport/main.css', array(), __DIR__ . '/fixtures/cssimport', 'main.css');
$asset->setTargetPath('foo/bar.css');
$asset->ensureFilter($filter1);
$asset->ensureFilter($filter2);
$expected = <<<CSS
/* main.css */
/* import.css */
body { color: red; }
/* more/evenmore/deep1.css */
/* more/evenmore/deep2.css */
body {
background: url(../more/evenmore/bg.gif);
}
body { color: black; }
CSS;
$this->assertEquals($expected, $asset->dump(), '->filterLoad() inlines CSS imports');
}
示例2: asset
/**
* @param $path String target path
* @return \Assetic\Filter\FileAsset
*/
public function asset($opts = array())
{
$asset = new FileAsset($this->real_path);
$ext = strtolower(substr($this->real_path, strrpos($this->real_path, '.')));
if (in_array($ext, array('.css', '.scss'))) {
//il faut rajouter la méthode asset-url
$scss = new ScssphpFilter();
if (isset($opts['compass']) && $opts['compass']) {
$scss->enableCompass(true);
}
$scss->registerFunction('aphet_url', function ($args, $scss) {
if ($args[0][0] === 'string') {
$url = is_array($args[0][2][0]) ? $args[0][2][0][2][0] : $args[0][2][0];
} else {
throw new \Exception('je ne sais pas quoi faire là');
}
if (strpos($url, '?') !== false) {
list($url, $query) = explode('?', $url);
} else {
$query = null;
}
if (strpos($url, '#') !== false) {
list($url, $hash) = explode('#', $url);
} else {
$hash = null;
}
return 'url(' . aphet_url($url) . ($query ? "?{$query}" : '') . ($hash ? "?{$hash}" : '') . ')';
});
$asset->ensureFilter($scss);
} elseif ($ext === '.js') {
$filter = new \Assetic\Filter\CallablesFilter(function ($asset) {
$asset->setContent(preg_replace_callback('/aphet_url\\((.*)\\)/', function ($match) {
return '\'' . aphet_url(json_decode($match[1])) . '\'';
}, $asset->getContent()));
});
$asset->ensureFilter($filter);
}
return $asset;
}
示例3: cssPackAction
public function cssPackAction()
{
$collection = new AssetCollection();
foreach ($this->container->getParameter('cms.cms_resources.css_pack') as $asset) {
$assetPath = $this->container->getApplication()->getWebRoot() . DIRECTORY_SEPARATOR . $asset;
$assetObject = new FileAsset($assetPath, array(), $this->container->getApplication()->getWebRoot());
$assetObject->setTargetPath('/_cms_internal/');
if (substr($asset, strrpos($asset, '.')) == '.less') {
$assetObject->ensureFilter(new LessphpFilter());
}
$collection->add($assetObject);
}
$content = $this->container->getCache()->fetch('cms_assets', 'css_pack', function () use($collection) {
return $collection->dump(new CssRewriteFilter());
}, $collection->getLastModified());
return new Response($content, 200, array('Content-Type' => 'text/css'));
}
示例4: listen
/**
* @param RequestResponseEvent $event
*/
public function listen(RequestResponseEvent $event)
{
$path = $event->getRequest()->getPathInfo();
$parts = pathinfo($path);
$parts = array_merge(array('dirname' => '', 'basename' => '', 'extension' => '', 'filename'), $parts);
switch (strtolower($parts['extension'])) {
case 'css':
//possible it's not yet compiled less file?
$lessFile = $this->container->getApplication()->getWebRoot() . $path . '.less';
if (is_file($lessFile)) {
$asset = new FileAsset($lessFile);
$asset->ensureFilter(new LessphpFilter());
$content = $this->container->getCache()->fetch('assets_404', $path, function () use($asset) {
return $asset->dump();
}, $asset->getLastModified(), 0, true);
$event->setResponse(new Response($content, 200, array('Content-Type' => 'text/css')));
$event->stopPropagation();
return;
}
break;
}
}
示例5: call
/**
* Call
*
* This method will check the HTTP request to see if it is a CSS file. If
* so, it will attempt to find a corresponding LESS file. If one is found,
* it will compile the file to CSS and serve it, optionally saving the CSS
* to a filesystem cache. The request will end at this point.
*
* If the request is not for a CSS file, or if the corresponding LESS file
* is not found, this middleware will pass the request on.
*/
public function call()
{
$app = $this->app;
// PHP 5.3 closures do not have access to $this, so we must proxy it in.
// However, the proxy only has access to public fields.
$self = $this;
$app->hook('slim.before', function () use($app, $self) {
$path = $app->request()->getPathInfo();
// Run filter only for requests for CSS files
if (preg_match('/\\.css$/', $path)) {
$path = preg_replace('/\\.css$/', '.less', $path);
// Get absolute physical path on filesystem for LESS file
$abs = str_replace('\\', '/', getcwd()) . $self->options['src'] . '/' . $path;
$abs = str_replace('//', '/', $abs);
$self->debug("Looking for LESS file: {$abs}");
$abs = realpath($abs);
if ($abs === false) {
// If LESS file is not found, just return
$self->debug("LESS file not found: {$abs}");
return;
}
$self->debug("LESS file found: {$abs}");
// Prepare Assetic
$lessFilter = new LessphpFilter();
$importFilter = new CssImportFilter();
$css = new FileAsset($abs, array($lessFilter, $importFilter));
if ($self->options['minify'] === true) {
// Minify, if desired
$self->debug("Minifying LESS file: {$abs}");
$css->ensureFilter(new CssMinFilter());
}
if ($self->options['cache'] === true) {
// Cache results, if desired
$self->debug("Caching LESS file: {$self->options['cache.dir']}");
$cache = new FilesystemCache($self->options['cache.dir']);
$css = new AssetCache($css, $cache);
}
// Render results and exit
$res = $app->response();
$res['Content-Type'] = 'text/css';
$app->halt(200, $css->dump());
}
});
$this->next->call();
}
示例6: testNotFindModuleNameAmongPaths
/**
* When first part of a module name is not specified in paths and not equals baseUrl, we can't find module
* so this module exclusions will not be excluded
*
* @covers Hearsay\RequireJSBundle\Assetic\Filter\RJsFilter::filterDump
* @covers Hearsay\RequireJSBundle\Assetic\Filter\RJsFilter::addModule
* @covers Hearsay\RequireJSBundle\Assetic\Filter\RJsFilter::addOption
*/
public function testNotFindModuleNameAmongPaths()
{
$this->filter->addOption('preserveLicenseComments', false);
// registering optimizer modules config
$this->filter->addModule("module/file3", array("include" => array("module/file", "module/file2")));
$this->filter->addModule("module2/file4", array("exclude" => array("module/file3")));
$asset = new FileAsset(__DIR__ . '/modules/module2/file4.js');
$asset->ensureFilter($this->filter);
// expecting result contains only content of file4 although file4 depends on file3 and file3 depends on file 2 and file
$this->assertRegExp('/^define\\("module\\/file2",\\{js:"got it twice"\\}\\),define\\("module\\/file",\\{js:"got it"\\}\\),' . 'require\\(\\["module\\/file2","module\\/file"\\],function\\(e,t\\)\\{return console.log\\(e,t\\)\\}\\),' . 'define\\("module\\/file3",function\\(\\)\\{\\}\\),require\\(\\["module\\/file3"\\],function\\(e\\)\\{return console.log\\(e\\)\\}\\),' . 'define\\(".{32}",function\\(\\)\\{\\}\\);$/', $asset->dump(), 'Defined exclusions for modules/module2/file4.js excluded incorrectly');
}