本文整理汇总了PHP中Symfony\Component\Templating\TemplateReferenceInterface类的典型用法代码示例。如果您正苦于以下问题:PHP TemplateReferenceInterface类的具体用法?PHP TemplateReferenceInterface怎么用?PHP TemplateReferenceInterface使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TemplateReferenceInterface类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: load
public function load(TemplateReferenceInterface $template)
{
if (method_exists($this, $method = 'get' . ucfirst($template->get('name')) . 'Template')) {
return new StringStorage($this->{$method}());
}
return false;
}
示例2: load
/**
* Loads a template.
*
* @param TemplateReferenceInterface $template A template
*
* @return Storage|bool false if the template cannot be loaded, a Storage instance otherwise
*/
public function load(TemplateReferenceInterface $template)
{
$key = hash('sha256', $template->getLogicalName());
$dir = $this->dir . DIRECTORY_SEPARATOR . substr($key, 0, 2);
$file = substr($key, 2) . '.tpl';
$path = $dir . DIRECTORY_SEPARATOR . $file;
if (is_file($path)) {
if (null !== $this->logger) {
$this->logger->debug('Fetching template from cache.', array('name' => $template->get('name')));
} elseif (null !== $this->debugger) {
// just for BC, to be removed in 3.0
$this->debugger->log(sprintf('Fetching template "%s" from cache.', $template->get('name')));
}
return new FileStorage($path);
}
if (false === ($storage = $this->loader->load($template))) {
return false;
}
$content = $storage->getContent();
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
file_put_contents($path, $content);
if (null !== $this->logger) {
$this->logger->debug('Storing template in cache.', array('name' => $template->get('name')));
} elseif (null !== $this->debugger) {
// just for BC, to be removed in 3.0
$this->debugger->log(sprintf('Storing template "%s" in cache.', $template->get('name')));
}
return new FileStorage($path);
}
示例3: load
/**
* Loads a template.
*
* @param TemplateReferenceInterface $template A template
*
* @return Storage|Boolean false if the template cannot be loaded, a Storage instance otherwise
*/
public function load(TemplateReferenceInterface $template)
{
$key = md5($template->getLogicalName());
$dir = $this->dir . DIRECTORY_SEPARATOR . substr($key, 0, 2);
$file = substr($key, 2) . '.tpl';
$path = $dir . DIRECTORY_SEPARATOR . $file;
if (file_exists($path)) {
if (null !== $this->debugger) {
$this->debugger->log(sprintf('Fetching template "%s" from cache', $template->get('name')));
}
return new FileStorage($path);
}
if (false === ($storage = $this->loader->load($template))) {
return false;
}
$content = $storage->getContent();
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
file_put_contents($path, $content);
if (null !== $this->debugger) {
$this->debugger->log(sprintf('Storing template "%s" in cache', $template->get('name')));
}
return new FileStorage($path);
}
示例4: load
/**
* Loads a template.
*
* @param TemplateReferenceInterface $template A template
*
* @return Storage|bool false if the template cannot be loaded, a Storage instance otherwise
*/
public function load(TemplateReferenceInterface $template)
{
$key = md5($template->getLogicalName());
$dir = $this->dir . DIRECTORY_SEPARATOR . substr($key, 0, 2);
$file = substr($key, 2) . '.tpl';
$path = $dir . DIRECTORY_SEPARATOR . $file;
if (is_file($path)) {
if (null !== $this->debugger) {
$this->debugger->log(sprintf('Fetching template "%s" from cache', $template->get('name')));
}
return new FileStorage($path);
}
if (false === ($storage = $this->loader->load($template))) {
return false;
}
$content = $storage->getContent();
if (!is_dir($dir) && !@mkdir($dir, 0777, true) && !is_dir($dir)) {
throw new \RuntimeException(sprintf('Cache Loader was not able to create directory "%s"', $dir));
}
file_put_contents($path, $content);
if (null !== $this->debugger) {
$this->debugger->log(sprintf('Storing template "%s" in cache', $template->get('name')));
}
return new FileStorage($path);
}
示例5: load
/**
* Loads a template.
*
* @param TemplateReferenceInterface $template A template
*
* @return Storage|Boolean false if the template cannot be loaded, a Storage instance otherwise
*
* @api
*/
public function load(TemplateReferenceInterface $template)
{
$file = $template->get('name');
if (self::isAbsolutePath($file) && file_exists($file)) {
return new FileStorage($file);
}
$replacements = array();
foreach ($template->all() as $key => $value) {
$replacements['%' . $key . '%'] = $value;
}
$logs = array();
foreach ($this->templatePathPatterns as $templatePathPattern) {
if (is_file($file = strtr($templatePathPattern, $replacements)) && is_readable($file)) {
if (null !== $this->debugger) {
$this->debugger->log(sprintf('Loaded template file "%s"', $file));
}
return new FileStorage($file);
}
if (null !== $this->debugger) {
$logs[] = sprintf('Failed loading template file "%s"', $file);
}
}
if (null !== $this->debugger) {
foreach ($logs as $log) {
$this->debugger->log($log);
}
}
return false;
}
示例6: load
/**
* Loads a template.
*
* @param TemplateReferenceInterface $template A template
*
* @return Storage|bool false if the template cannot be loaded, a Storage instance otherwise
*/
public function load(TemplateReferenceInterface $template)
{
$file = $template->get('name');
if (self::isAbsolutePath($file) && is_file($file)) {
return new FileStorage($file);
}
$replacements = array();
foreach ($template->all() as $key => $value) {
$replacements['%' . $key . '%'] = $value;
}
$fileFailures = array();
foreach ($this->templatePathPatterns as $templatePathPattern) {
if (is_file($file = strtr($templatePathPattern, $replacements)) && is_readable($file)) {
if (null !== $this->logger) {
$this->logger->debug('Loaded template file.', array('file' => $file));
}
return new FileStorage($file);
}
if (null !== $this->logger) {
$fileFailures[] = $file;
}
}
// only log failures if no template could be loaded at all
foreach ($fileFailures as $file) {
if (null !== $this->logger) {
$this->logger->debug('Failed loading template file.', array('file' => $file));
}
}
return false;
}
示例7: locate
/**
* Returns a full path for a given file.
*
* @param TemplateReferenceInterface $template The template
* @param string $currentPath Unused
* @param Boolean $first Unused
*
* @return string The full path for the file
*
* @throws \InvalidArgumentException When file is not found
*/
public function locate($template, $currentPath = null, $first = true)
{
$key = $template->getSignature();
if (!isset($this->templates[$key])) {
throw new \InvalidArgumentException(sprintf('Unable to find template "%s".', json_encode($template)));
}
return $this->templates[$key];
}
示例8: getCacheKey
/**
* Returns a full path for a given file.
*
* @param TemplateReferenceInterface $template A template
*
* @return string The full path for the file
*/
protected function getCacheKey($template)
{
$name = $template->getLogicalName();
if ($this->activeTheme) {
$name .= '|' . $this->activeTheme->getName();
}
return $name;
}
示例9: locate
/**
* Returns a full path for a given file.
*
* @param TemplateReferenceInterface $template The template
* @param string $currentPath Unused
* @param Boolean $first Unused
*
* @return string The full path for the file
*
* @throws \InvalidArgumentException When file is not found
*/
public function locate($template, $currentPath = null, $first = true)
{
$key = $template->getSignature();
if (!isset($this->templates[$key])) {
return parent::locate($template, $currentPath, $first);
}
return $this->templates[$key];
}
示例10: load
/**
* Loads a template.
*
* @param TemplateReferenceInterface $template A template
*
* @return Storage|bool false if the template cannot be loaded, a Storage instance otherwise
*
* @api
*/
public function load(TemplateReferenceInterface $template)
{
$method = $template->get('name');
if (!method_exists($this->templates, $method)) {
return false;
}
return new ClassStorage([$this->templates, $method]);
}
示例11:
function it_throws_resource_not_found_exception_if_the_location_found_in_cache_is_null(TemplateLocatorInterface $decoratedTemplateLocator, Cache $cache, TemplateReferenceInterface $template, ThemeInterface $theme)
{
$template->getLogicalName()->willReturn('Logical:Name');
$template->getPath()->willReturn('@Acme/template.html.twig');
$theme->getName()->willReturn('theme/name');
$cache->contains('Logical:Name|theme/name')->willReturn(true);
$cache->fetch('Logical:Name|theme/name')->willReturn(null);
$decoratedTemplateLocator->locateTemplate(Argument::cetera())->shouldNotBeCalled();
$this->shouldThrow(ResourceNotFoundException::class)->during('locateTemplate', [$template, $theme]);
}
示例12: load
public function load(TemplateReferenceInterface $template)
{
$file = $template->get('name');
foreach ($this->paths as $path) {
$template->set('name', $path . '/' . $file);
$result = parent::load($template);
if ($result) {
return $result;
}
}
return false;
}
示例13: locate
/**
* Returns a full path for a given file.
*
* @param TemplateReferenceInterface $template A template
* @param string $currentPath Unused
* @param Boolean $first Unused
*
* @return string The full path for the file
*
* @throws \InvalidArgumentException When file is not found
*/
public function locate($template, $currentPath = null, $first = true)
{
$key = $template->getSignature();
if (isset($this->cache[$key])) {
return $this->cache[$key];
}
try {
return $this->cache[$key] = $this->locator->locate($template->getPath(), $this->path);
} catch (\InvalidArgumentException $e) {
throw new \InvalidArgumentException(sprintf('Unable to find template "%s" in "%s".', $template, $this->path), 0, $e);
}
}
示例14:
function it_builds_cache_by_warming_up_every_template_and_every_theme_together(TemplateFinderInterface $templateFinder, TemplateLocatorInterface $templateLocator, ThemeRepositoryInterface $themeRepository, Cache $cache, ThemeInterface $theme, TemplateReferenceInterface $firstTemplate, TemplateReferenceInterface $secondTemplate)
{
$templateFinder->findAllTemplates()->willReturn([$firstTemplate, $secondTemplate]);
$themeRepository->findAll()->willReturn([$theme]);
$theme->getName()->willReturn('theme/name');
$firstTemplate->getLogicalName()->willReturn('Logical:Name:First');
$secondTemplate->getLogicalName()->willReturn('Logical:Name:Second');
$templateLocator->locateTemplate($firstTemplate, $theme)->willReturn('/First/Theme/index.html.twig');
$templateLocator->locateTemplate($secondTemplate, $theme)->willThrow(ResourceNotFoundException::class);
$cache->save('Logical:Name:First|theme/name', '/First/Theme/index.html.twig')->shouldBeCalled();
$cache->save('Logical:Name:Second|theme/name', null)->shouldBeCalled();
$this->warmUp(null);
}
示例15: locate
/**
* Returns a full path for a given file.
*
* @param TemplateReferenceInterface $template A template
* @param string $currentPath Unused
* @param Boolean $first Unused
*
* @return string The full path for the file
*
* @throws \InvalidArgumentException When the template is not an instance of TemplateReferenceInterface
* @throws \InvalidArgumentException When the template file can not be found
*/
public function locate($template, $currentPath = null, $first = true)
{
if (!$template instanceof TemplateReferenceInterface) {
throw new \InvalidArgumentException("The template must be an instance of TemplateReferenceInterface.");
}
$key = $template->getLogicalName();
if (isset($this->cache[$key])) {
return $this->cache[$key];
}
try {
return $this->cache[$key] = $this->locator->locate($template->getPath(), $currentPath);
} catch (\InvalidArgumentException $e) {
throw new \InvalidArgumentException(sprintf('Unable to find template "%s" : "%s".', $template, $e->getMessage()), 0, $e);
}
}