123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Templating\Helper;
- use Symfony\Component\Templating\Asset\PackageInterface;
- /**
- * CoreAssetsHelper helps manage asset URLs.
- *
- * Usage:
- *
- * <code>
- * <img src="<?php echo $view['assets']->getUrl('foo.png') ?>" />
- * </code>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Kris Wallsmith <kris@symfony.com>
- */
- class CoreAssetsHelper extends Helper implements PackageInterface
- {
- protected $defaultPackage;
- protected $namedPackages;
- /**
- * Constructor.
- *
- * @param PackageInterface $defaultPackage The default package
- * @param array $namedPackages Additional packages indexed by name
- */
- public function __construct(PackageInterface $defaultPackage, array $namedPackages = array())
- {
- $this->defaultPackage = $defaultPackage;
- $this->namedPackages = array();
- foreach ($namedPackages as $name => $package) {
- $this->addPackage($name, $package);
- }
- }
- /**
- * Sets the default package.
- *
- * @param PackageInterface $defaultPackage The default package
- */
- public function setDefaultPackage(PackageInterface $defaultPackage)
- {
- $this->defaultPackage = $defaultPackage;
- }
- /**
- * Adds an asset package to the helper.
- *
- * @param string $name The package name
- * @param PackageInterface $package The package
- */
- public function addPackage($name, PackageInterface $package)
- {
- $this->namedPackages[$name] = $package;
- }
- /**
- * Returns an asset package.
- *
- * @param string $name The name of the package or null for the default package
- *
- * @return PackageInterface An asset package
- *
- * @throws InvalidArgumentException If there is no package by that name
- */
- public function getPackage($name = null)
- {
- if (null === $name) {
- return $this->defaultPackage;
- }
- if (!isset($this->namedPackages[$name])) {
- throw new \InvalidArgumentException(sprintf('There is no "%s" asset package.', $name));
- }
- return $this->namedPackages[$name];
- }
- /**
- * Gets the version to add to public URL.
- *
- * @param string $packageName A package name
- *
- * @return string The current version
- */
- public function getVersion($packageName = null)
- {
- return $this->getPackage($packageName)->getVersion();
- }
- /**
- * Returns the public path.
- *
- * Absolute paths (i.e. http://...) are returned unmodified.
- *
- * @param string $path A public path
- * @param string $packageName The name of the asset package to use
- *
- * @return string A public path which takes into account the base path and URL path
- */
- public function getUrl($path, $packageName = null)
- {
- return $this->getPackage($packageName)->getUrl($path);
- }
- /**
- * Returns the canonical name of this helper.
- *
- * @return string The canonical name
- */
- public function getName()
- {
- return 'assets';
- }
- }
|