2016-09-07 8 views
2

PhalconPHP(v 2.0.13)でテンプレートをロードしようとしていますが、最も簡単な例でさえも動作していません。この例ではhttp://www.mysite.dev.fb/forms/にアクセスしようとしています。ここに私のルータです:Phalconビューがロードされていません

);

ルーティングが動作しているか、少なくともアクションのコードに達しています(vardumpsなど)。

ここに私のコントローラーアクションの亜種があります。この場合

バリアント1

public function formsAction() 
{ 
} 

、アプリ/ビュー/インデックス/ forms.voltに配置テンプレートは、(Iデバッグ目的のために、.phtml拡張子を持つファイルのコピーを持っている)であるべきですロードされた、右か?間違っていると、空の画面が表示され、エラーログにはエラーはありません。

バリアント2

そして、私はそのように、ビューを選ぶ試み:

$this->view->setViewsDir(__DIR__ . '/../views/'); 
$this->view->pick('forms/contact'); 

ファイル、アプリケーション/ビュー/フォーム/ contact.voltを、また、完全な権限を持つ、存在します。 Vardumping $ this-> view-> getContent()nullを返します。その結果は、エラーのない空の白い画面に戻ります。

バリアント3

必死に、私が直接このようなテンプレート(この例では、私はデフォルトのPhalconインデックス/インデックス・テンプレートを使用しています)レンダリングを試してみました:

$this->view->start(); 
$this->view->render('index', 'index'); //Pass a controller/action as parameters if required 
$this->view->finish(); 

を唯一の違いは、今ありますvardumping $ this-> view-> getContent()は、nullの代わりに空の文字列を返します。

自動レンダリングが無効になっているみたいだが、次の行が(それが必要として)がfalseを返す:

var_dump($this->view->isDisabled()); 

私はアイデアの出だ、誰でも助けることができますか?私が何かを含めるのを忘れてしまった場合は、それに答えて回答します。

+0

ビューコンポーネントを正しく設定しましたか?これはサービスに登録されたビューコンポーネントです:http://pastebin.com/SdX121d8。また、Phalconにキャッシュフォルダに対するr/w権限があることを確認してください。 PHPのログを確認してください – Luke

+0

'setViewsDir(__ DIR__。/../ views/')'は正しいパスを設定していないと思います。 Viewサービスはどこに登録しますか? index.phpファイルには?ビューが '/ app/views /'にあり、 'index'ファイルが'/public/index.php'にある場合、そのパスは '__DIR__ 'でなければなりません。 '../app/view/' 'と入力します。 –

+0

はい、私のVoltエンジンの定義の何かが怪しいようです。私はLukeの例からphtml行を追加しました。はい、.phtmlテンプレートが適切にロードされています。ありがとう、私は何かの開発があるときに報告します(肯定的な、または私が再び立ち往生する場合)。 –

答えて

1

PHPのエラーをPHPログで確かめてください。また、私はあなたのボルトの宣言が間違っている可能性があると思う。ここで私が使用するサービスで、依存関係の注射ビューコンポーネントを宣言する作業例です:

$di->setShared('view', function() use ($di,$config) { 
    $view = new View(); 
    $view->setViewsDir($config->application->viewsDir); // path to directory with views, loaded from config in this case 
    $view->registerEngines(array(
     '.volt' => function ($view, $di) use ($di, $config) { 
      $volt = new VoltEngine($view, $di); 
      $volt->setOptions(array(
       'compiledPath' => $config->application->cacheDir, // path to cache dir, loaded from config in this case 
       'compiledSeparator' => '_' 
      ));   
      return $volt; 
     }, 
     '.phtml' => 'Phalcon\Mvc\View\Engine\Php' 
    )); 
    return $view; 
}); 

あなたのウェブサーバがキャッシュディレクトリのためのビューとR/W権の読み取り権限を持っていることを確認してください。それがあなたを助けることを願っています

関連する問題