Twig 使用 slim 框架渲染空页面
Twig render empty page with slim framework
我正在使用带有 slim 框架 3 的 Twig 模板引擎
我的控制器中有一个简单的功能
public function test_twig($request, $response, $args) {
return $this->view->render($response, "login.phtml");
}
当我 运行 这段代码在 locahost 中时,它工作得很好,但我在我的服务器上试过它,它显示一个空页面,非常奇怪的行为页面没有动态变量它只是 HTML
我也试过这个:
$str = $this->view->fetchFromString('<p>Hi, my name is {{ name }}.</p>', [
'name' => "oussama"
]);
$response->getBody()->write($str);
return $response;
它在本地主机上工作,而不是在我的服务器上工作(我的服务器上有 PHP 5.6)
在执行之后我在这里结束了编译函数不能编译一个简单的HTML文件!!!
/**
* 编译模板源代码。
*
* @return string 编译后的PHP源代码
*
* @throws Twig_Error_Syntax 在分词、解析或编译过程中出现错误时
*/
public function compileSource(Twig_Source $source)
{
try {
return $this->compile($this->parse($this->tokenize($source)));
} catch (Twig_Error $e) {
$e->setSourceContext($source);
throw $e;
} catch (Exception $e) {
throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
}
}
我确实遵循了代码,直到 Twig_Lexer Class 在构造函数内部
恰好在这一行:
'operator' => $this->getOperatorRegex(),
Twig 自 v2.0.0 版本以来需要 PHP 7.0 或更高版本。正如您所说,远程服务器上有 PHP 5.6,它们不能一起工作。您可以在遥控器上升级到 PHP 7(如果可能),或者将 twig 降级到 v1.35.0,它仍然支持 PHP 5.
来源:
Twig 2.4 需要 PHP7 及更高版本。您的服务器不满足该要求,Twig 失败。
我们需要通过设置自己的依赖项来覆盖默认的 Twig 依赖项。在你的项目 conposer.json 文件中添加一个 Twig 依赖项:
"twig/twig":"^1.18"
告诉 composer 运行 新配置并应用更改:
composer update
我只是通过更改我的 composer.json 要求使它工作:
"slim/twig-view": "2.0",
将版本更改为 2.0,因为它适用于 PHP 5.6
Eloquent 也有问题,如果你使用版本“~5.1”,它将无法工作我只是为数据库依赖设置了一个严格的版本“5.4.36”,如下所示:
"illuminate/database": "5.4.36"
我正在使用带有 slim 框架 3 的 Twig 模板引擎
我的控制器中有一个简单的功能
public function test_twig($request, $response, $args) {
return $this->view->render($response, "login.phtml");
}
当我 运行 这段代码在 locahost 中时,它工作得很好,但我在我的服务器上试过它,它显示一个空页面,非常奇怪的行为页面没有动态变量它只是 HTML
我也试过这个:
$str = $this->view->fetchFromString('<p>Hi, my name is {{ name }}.</p>', [
'name' => "oussama"
]);
$response->getBody()->write($str);
return $response;
它在本地主机上工作,而不是在我的服务器上工作(我的服务器上有 PHP 5.6)
在执行之后我在这里结束了编译函数不能编译一个简单的HTML文件!!!
/** * 编译模板源代码。 * * @return string 编译后的PHP源代码 * * @throws Twig_Error_Syntax 在分词、解析或编译过程中出现错误时 */
public function compileSource(Twig_Source $source)
{
try {
return $this->compile($this->parse($this->tokenize($source)));
} catch (Twig_Error $e) {
$e->setSourceContext($source);
throw $e;
} catch (Exception $e) {
throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
}
}
我确实遵循了代码,直到 Twig_Lexer Class 在构造函数内部 恰好在这一行:
'operator' => $this->getOperatorRegex(),
Twig 自 v2.0.0 版本以来需要 PHP 7.0 或更高版本。正如您所说,远程服务器上有 PHP 5.6,它们不能一起工作。您可以在遥控器上升级到 PHP 7(如果可能),或者将 twig 降级到 v1.35.0,它仍然支持 PHP 5.
来源:
Twig 2.4 需要 PHP7 及更高版本。您的服务器不满足该要求,Twig 失败。
我们需要通过设置自己的依赖项来覆盖默认的 Twig 依赖项。在你的项目 conposer.json 文件中添加一个 Twig 依赖项:
"twig/twig":"^1.18"
告诉 composer 运行 新配置并应用更改:
composer update
我只是通过更改我的 composer.json 要求使它工作:
"slim/twig-view": "2.0",
将版本更改为 2.0,因为它适用于 PHP 5.6
Eloquent 也有问题,如果你使用版本“~5.1”,它将无法工作我只是为数据库依赖设置了一个严格的版本“5.4.36”,如下所示:
"illuminate/database": "5.4.36"