【问题标题】:Slim framework with raintpl带有raintpl的超薄框架
【发布时间】:2015-07-30 09:25:28
【问题描述】:

我有一个使用RainTpl3 作为其模板引擎的现有项目。我正在尝试将其移植到 Slim 框架 2。
Q1 : 有什么方法可以使 slim 使用我的 $tpl 对象来呈现其视图(通过 DI 或任何其他类似方法)。

我设法破解了一种在外部函数中配置创建模板对象的方法,然后该函数应返回随后 slim 应回显的内容。早些时候它无法正确配置 tpl,所以我在我的 init 文件中配置了它。现在,当我使用 $tpl->draw('index'); 时,它表示找不到模板索引。 Q2:为什么找不到模板?

MY_APP_ROOT_/Public/index.php

require_once "../init.php";

# Fire up an app
$app = new Slim\Slim();

$app->get('/', function(){echo MyNS\Router\APIDefault::showHome();});

$app->get('/Hello', function() {
    echo "Get Route is working.";
});
# Run the Slim application
$app->run();

:MY_APP_ROOT_/Routes/APIDefault.php

<?php
namespace MyNS\Router; 


class APIDefault
{

    private function __construct( $argument)
    {
        throw new \Exception("Error Constructor not allowed", 1);

    }


    public static function showHome()
    {

        $tpl = new \Rain\Tpl();

         $tpl->assign('Name','Abhinav');
        $a = $tpl->draw('index',$return_string = true);
        return $a;
    }
}

index.tpl 存储在 MY_APP_ROOT_/Templates/ 中。

【问题讨论】:

    标签: php template-engine slim


    【解决方案1】:
    1. 您可以制作自己的视图脚本来包装该模板引擎。 Slim 也为 Twig 和 Smarty here(仅 Slim 2)做到了这一点。

    2. 您似乎从未设置用于搜索模板的目录,我错了吗?但是,如果您使用自己的 View Plugin,您可以将其作为 Constructor 或其他东西的参数。

    【讨论】:

    • 我已经在 init.php 文件中设置了模板目录,这基本上是一种引导加载程序。我将检查是否可以创建视图脚本。感谢您的链接。
    • 还没有。我花了大约 2 天时间。然后我去了老学校。我在 slim 的每个路由器功能中创建$tpl 对象并进行处理。 RainTPL 的绘图函数有一个选项$return_string = true,它返回字符串而不是转发到浏览器。我将该返回字符串作为苗条应用程序回显。这工作顺利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2015-01-11
    相关资源
    最近更新 更多