mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Merge pull request #7730 from dhensby/pulls/4.0/ssviewer-requirements-backend
FIX `SSViwer::execute_template` should allow requirements to be included
This commit is contained in:
commit
217cb93b25
@ -893,7 +893,7 @@ class SSTemplateParser extends Parser implements TemplateParser
|
||||
|
||||
// Note: 'type' here is important to disable subTemplates in SSViewer::getSubtemplateFor()
|
||||
$res['php'] = '$val .= \\SilverStripe\\View\\SSViewer::execute_template([["type" => "Includes", '.$template.'], '.$template.'], $scope->getItem(), array(' .
|
||||
implode(',', $arguments)."), \$scope);\n";
|
||||
implode(',', $arguments)."), \$scope, true);\n";
|
||||
|
||||
if ($this->includeDebuggingComments) { // Add include filename comments on dev sites
|
||||
$res['php'] =
|
||||
|
@ -3501,7 +3501,7 @@ class SSTemplateParser extends Parser implements TemplateParser
|
||||
|
||||
// Note: 'type' here is important to disable subTemplates in SSViewer::getSubtemplateFor()
|
||||
$res['php'] = '$val .= \\SilverStripe\\View\\SSViewer::execute_template([["type" => "Includes", '.$template.'], '.$template.'], $scope->getItem(), array(' .
|
||||
implode(',', $arguments)."), \$scope);\n";
|
||||
implode(',', $arguments)."), \$scope, true);\n";
|
||||
|
||||
if ($this->includeDebuggingComments) { // Add include filename comments on dev sites
|
||||
$res['php'] =
|
||||
|
@ -745,14 +745,28 @@ PHP;
|
||||
* @param mixed $data Data context
|
||||
* @param array $arguments Additional arguments
|
||||
* @param Object $scope
|
||||
* @param bool $globalRequirements
|
||||
*
|
||||
* @return string Evaluated result
|
||||
*/
|
||||
public static function execute_template($template, $data, $arguments = null, $scope = null)
|
||||
public static function execute_template($template, $data, $arguments = null, $scope = null, $globalRequirements = false)
|
||||
{
|
||||
$v = SSViewer::create($template);
|
||||
$v->includeRequirements(false);
|
||||
|
||||
return $v->process($data, $arguments, $scope);
|
||||
if ($globalRequirements) {
|
||||
$v->includeRequirements(false);
|
||||
} else {
|
||||
//nest a requirements backend for our template rendering
|
||||
$origBackend = Requirements::backend();
|
||||
Requirements::set_backend(Requirements_Backend::create());
|
||||
}
|
||||
try {
|
||||
return $v->process($data, $arguments, $scope);
|
||||
} finally {
|
||||
if (!$globalRequirements) {
|
||||
Requirements::set_backend($origBackend);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -763,14 +777,28 @@ PHP;
|
||||
* @param string $content Input string
|
||||
* @param mixed $data Data context
|
||||
* @param array $arguments Additional arguments
|
||||
* @param bool $globalRequirements
|
||||
*
|
||||
* @return string Evaluated result
|
||||
*/
|
||||
public static function execute_string($content, $data, $arguments = null)
|
||||
public static function execute_string($content, $data, $arguments = null, $globalRequirements = false)
|
||||
{
|
||||
$v = SSViewer::fromString($content);
|
||||
$v->includeRequirements(false);
|
||||
|
||||
return $v->process($data, $arguments);
|
||||
if ($globalRequirements) {
|
||||
$v->includeRequirements(false);
|
||||
} else {
|
||||
//nest a requirements backend for our template rendering
|
||||
$origBackend = Requirements::backend();
|
||||
Requirements::set_backend(Requirements_Backend::create());
|
||||
}
|
||||
try {
|
||||
return $v->process($data, $arguments);
|
||||
} finally {
|
||||
if (!$globalRequirements) {
|
||||
Requirements::set_backend($origBackend);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user