2016-09-07 57 views
2

我試圖在PhalconPHP(v 2.0.13)中加載模板,但即使是最簡單的示例似乎也不起作用。在這個例子中,我試圖訪問http://www.mysite.dev.fb/forms/。這裏是我的路由器:Phalcon查看未加載

$router->add(
    '/forms/', 
    [ 
      "namespace" => "Render\\Controller", 
      "controller" => "index", 
      "action" => "forms", 
    ], 
    ['GET'] 

);

路由工作,或者至少在行動中的代碼(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

拼命,我試過直接渲染模板(在這個例子中,我使用的是默認爾康指數/指數模板)是這樣的:

$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 /')'沒有設置正確的路徑。你在哪裏註冊你的視圖服務?在index.php文件中?如果視圖位於'/ app/views /'中,而'index'文件位於'/ public/index.php'中,則路徑應該是__DIR__。 '../應用/視圖/''。 –

+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的權利。希望它能幫助你