2016-11-10 63 views
0

我剛開始使用Yii2。yii2:如何在模塊中加載相對路徑,動作,視圖...

-------------問題1:加載視圖錯誤----------------- 我有一個站點模塊與SiteController和它的意見。

actionIndex(){ 
    $this->render('index'); 
} 

It show error: the view ROOT_PATH/views/site/index.php not found (note: ROOT_PATH is driectory in my local).

在init()函數在ROOT_PATH \模塊\網站\ Module.php文件:我添加語句來測試:echo $this->getViewPath();

Result: ROOT_PATH\modules\Site\views

我想問:爲什麼它不會加載/ modules/Site/views文件夾中的index.php? (它加載ROOT_PATH \ views文件夾中的index.php,因此它沒有找到該視圖文件)

-------------問題2:加載操作錯誤------- -------

當我加入ROOT_PATH \模塊\網站\ Module.php文件: Yii::$app->setLayoutPath($this->getLayoutPath()); 現在,它可以加載的actionIndex正確的看法。但是鏈接這種觀點不工作:

$menuItems = [ 
    ['label' => 'About', 'url' => ['/site/about']] 
] 

HTML是generaated在前端:

<a href="/site/about">About</a> 

爲什麼href是'/網站/約',我想這個值將是「網站/網站/關於」

回答

0

叫‘關於’鏈接,你有意見/站點創建about.php並創建名稱必須sitecontroller

是actionAbout()函數

在sitecontroller

public function actionAboute() 
{ 
$this->render('about'); 
} 

的index.php中

<?= Html::a('About', ['value'=>Url::to('index.php?r=site/about')]) ?> 

和負載觀看問題檢查您的配置文件和cookieValidationKey一次。

+0

我知道這一點。我不明白爲什麼它加載incrrect視圖的actionIndex()。 –

0

所有模塊在其模塊路徑中搜索視圖模板。 所以,如果你有一個名爲「網站」,並在模塊內部模塊一個名爲控制器「SiteController」它搜索文件夾

ROOT_PATH\modules\site\views\site\

ROOT_PATH\modules\[modulename]\views\[controlername]

在視圖中如果直接有控制器在在\控制器應用viewpath將

ROOT_PATH\modules\views\site\

ROOT_PATH\modules\views\[controlername]

a在始於/始於根的視圖中的鏈接。在你的情況下,你只需要['about']鏈接到相同的控制器(和相同的模塊)。

如果在另一個模塊中鏈接到一個控制器也必須給模塊的名字,這也是你的情況site

['/site/site/about']也會鏈接到你的網站控制器網站模塊中。但是,如果你想它不需要在同一個模塊鏈接到同一個控制器上面提到的我。

您可以找到有關路由和URL創建蒞臨指導:

http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html

+0

感謝您的回覆。 我的模塊結構: ROOT_PATH \ 模塊\ 網站\ 控制器\ SiteController.php(具有的actionIndex) 意見\ 網站\ 的index.php 爲什麼在我的indexAction調用$這個 - >渲染(人指數「);它不加載正確。我加載ROOT_PATH \ views \ index.php –