簡體   English   中英

Slim應用程序錯誤類型-Twig_Error_Loader

[英]Slim Application Error type- Twig_Error_Loader

我是苗條框架的新手,正在開發實時視頻流應用程序。 這是我要添加到堆棧溢出帳戶的第一個問題。 我已經安裝了應用程序,並使用composer添加了所有必需的需求依賴項。 我在xampp localhost上打開應用程序時遇到以下問題

錯誤:

Type: Twig_Error_Loader
Message: Unable to find template "C:/xampp/htdocs/local/dev/templates/routes/home/home.twig" (looked into: ./templates).
File: C:\xampp\htdocs\local\dev\vendor\twig\twig\lib\Twig\Loader\Filesystem.php
Line: 215

Trace
#0     C:\xampp\htdocs\local\dev\vendor\twig\twig\lib\Twig\Loader\Filesystem.php(139): Twig_Loader_Filesystem->findTemplate('C:\\xampp\\htdocs...')
#1 C:\xampp\htdocs\local\dev\vendor\twig\twig\lib\Twig\Environment.php(264): Twig_Loader_Filesystem->getCacheKey('C:\\xampp\\htdocs...')
#2 C:\xampp\htdocs\local\dev\vendor\twig\twig\lib\Twig\Environment.php(322): Twig_Environment->getTemplateClass('C:\\xampp\\htdocs...', NULL)
#3 C:\xampp\htdocs\local\dev\vendor\slim\views\Twig.php(87): Twig_Environment->loadTemplate('C:\\xampp\\htdocs...')
#4 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\View.php(255): Slim\Views\Twig->render('C:\\xampp\\htdocs...', NULL)
#5 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\View.php(243): Slim\View->fetch('C:\\xampp\\htdocs...', NULL)
#6 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\Slim.php(757): Slim\View->display('C:\\xampp\\htdocs...')
#7 C:\xampp\htdocs\local\dev\templates\routes\home\home.php(16): Slim\Slim->render('C:\\xampp\\htdocs...', Array)
#8 [internal function]: {closure}()
#9 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\Route.php(468): call_user_func_array(Object(Closure), Array)
#10 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\Slim.php(1357): Slim\Route->dispatch()
#11 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\Middleware\Flash.php(85): Slim\Slim->call()
#12 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\Middleware\MethodOverride.php(92): Slim\Middleware\Flash->call()
#13     C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\Middleware\PrettyExceptions.php( 67): Slim\Middleware\MethodOverride->call()
#14 C:\xampp\htdocs\local\dev\vendor\slim\slim\Slim\Slim.php(1302):     Slim\Middleware\PrettyExceptions->call()
#15 C:\xampp\htdocs\local\dev\index.php(12): Slim\Slim->run()
#16 {main}

我沒有得到真正的錯誤是什么。 我的站點在本地主機上使用https保護,因為這是我的客戶端的要求。 我已經為我的xampp項目安裝了SSL證書,但仍然在https上也會出現此問題。

我的xampp版本v3.2.2和php 5.6.19

有沒有人以前遇到過同樣的問題。 在此先感謝您的快速回復。

更新 文件夾結構

更新2

這是我的配置文件,我使用苗條

 $app = new \Slim\Slim([
        'view' => new \Slim\Views\Twig()
 ]);
 $view = $app->view();
 $view->parserExtensions = [new \Slim\Views\TwigExtension()];
 $mongo = new MongoClient();
 $app->db = $mongo->local;
 $app->device = new Mobile_Detect;

UPDATE3

$app->get('/', function() use ($app){
$path = templatePath(__FILE__);
$templateData = [
    'pageTitle' => 'Home',
    'UI' => [
        'noSidebar' => true
    ]
];
$app->render("$path/home.twig", $templateData);
})->name('home');
//templatepath function that returns the path to $path variable
function templatePath($file) {
return str_replace(getcwd().'/templates/', '', dirname($file));
}

從回溯中可以看出,它找不到模板。 我認為其原因是因為所有路徑都相對於傳遞給Twig構造函數的路徑。

例如,如果我在實例化Twig時傳遞了templates/views ,而我的Twig文件位於templates/views/home.twig ,那么我要做的就是$app->render("home.twig");

更新

瀏覽我使用Slim 2完成的項目,看起來在實例化Slim時,您可以傳遞另一個選項,該選項指定Twig查找模板的位置的root 因此,請考慮以下代碼:

$app = new Slim([
    "view" => new Twig(),
    "templates.path" => "path/to/views/folder",
]);

完成之后,您便可以按照我上面所述的方法進行操作了。

更新2

重新閱讀您發布的錯誤消息后,我注意到它正在查看./templates 現在假設/templates是問題中發布的相同templates文件夾,則可以使用routes/home/home.twig文件的相對路徑,在這種情況下,該路徑為routes/home/home.twig 現在,您要渲染樹枝文件的任何地方都只需執行$app->render("routes/path/file.twig"); ,當然可以編輯您實際想要的文件的路徑。

更新3

僅為了完成,最終代碼如下所示:

$app = new \Slim\Slim([
    "view" => new \Slim\Views\Twig(),
    "templates.path" => "/../templates/routes"
 ]);
$view = $app->view();
$view->parserExtensions = [
    new \Slim\Views\TwigExtension()
 ];
$mongo = new MongoClient();
$app->db = $mongo->local;
$app->device = new Mobile_Detect;

然后,在任何您想要渲染視圖的地方都可以這樣做:

$app->render("home/home.twig");

編輯1

回應有關模板功能的評論。 看一下目錄結構,您實際上不需要功能,只需組合上面的代碼,然后從basename(__FILE__)獲取文件名即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM