2016-04-13 7 views
2

私はスリムなフレームワークには初心者で、ライブビデオストリーミングアプリで作業しています。これは私の最初の質問です。私はスタックオーバーフローアカウントを追加しています。私はアプリケーションをインストールし、コンポーザーに必要なすべての必要条件を追加しました。私はエラーが実際に何を得ていないのですスリムアプリケーションエラータイプ - Twig_Error_Loader

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} 

:私は

エラーlocalhostのXAMPP上でアプリケーションを開いていたとき、私は、次の問題に直面しています。私のサイトは、私のクライアントの要件であったので、https localhostで保護されています。 xamppプロジェクトのSSL証明書をインストールしましたが、httpsでもこの問題が発生します。

私のXAMPPのバージョンv3.2.2およびPHP 5.6.19

誰かを実行する前に、同じ問題に直面しています。迅速な対応のために事前に感謝します。

更新folder structure

更新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)); 
} 
+0

悪意のある人に申し訳ありませんが、正確なパスを使って 'C:/ xampp/htdocs/local/dev/templates/routes/home/home.twig'を開くことができますか? – LeonardChallis

+0

はい私は別のウィンドウで正確なパスを追加する場合は動作しています。私は私のブラウザでコードを見ることができます。私はそのページに書いています –

+0

"http"でウェブサイトを開いたときに問題が表示されませんか? – jmattheis

答えて

0

トレースバックからわかるように、テンプレートは見つかりません。その理由は、すべてのパスがTwigコンストラクタに渡されたパスを基準にしているためです。

例えば、私がTwigをインスタンス化したときにtemplates/viewsを渡して、Twigファイルがtemplates/views/home.twigにある場合、私がしなければならないのは$app->render("home.twig");です。あなたがスリムインスタンス化するとき、あなたは小枝のテンプレートを探しますどこのrootを指定する別のオプションを渡すことができるように

更新

は、私はスリム2でやったプロジェクトを通じて見ると、それが見えます。次のコードを考えてみましょう:

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

これを実行すると、上記のようになります。あなたが投稿エラーメッセージを再読み込み

アップデート2

、私はそれが./templatesを見ていることに気づきました。今度は/templatesが同じtemplatesというフォルダに質問が投稿されていると仮定した場合、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__)から得るだけで、あなたの機能は本当に必要ではありません。

+0

$ app = new \ Slim \ Slim([ \t 'view' => new \ Slim \ Views \ Twig( )]にも現れました。 $ view = $ app-> view(); $ view-> parserExtensions = [新しい\ Slim \ Views \ TwigExtension()]; –

+0

これは私の設定ファイルです。あなたは正確な考えを右に提案することができます.. –

+0

上記の私の編集を参照してください。 – meun5