2014-11-03 48 views
2

我是Yii的新手,我正在努力顯示一些類。 我有一個非常基本的例子:返回模板文件中的類yii

我得到了我的模板文件:themes/classic/views/layout/main.php,我想在那裏調用一個類。

<div class="col-lg-2 col-md-2 col-sm-2"> 
    <div class="box"> 
     <h2>Categorieën</h2> 
     <p> 
      <?php 
      echo AdminController::producten(); //<--- this does not work! 
      ?> 
     </p> 
    </div><!-- box --> 
</div><!-- col-lg-2 --> 

類被保護/控制器/ AdminController.php

在這類我有一個函數調用producten()

public function producten(){ 
    return 'Hier komen categorieën!'; 
} 

我想查看功能(在此情況下的字符串)在我的模板頁面。

你們可以告訴我,如果這是可能的話。或者我應該使用一個小部件?

回答

1

爲了使下面的代碼工作:

echo AdminController::producten(); 

你需要改變你的方法靜態方法如下圖所示:

public static function producten(){ 
    return 'Hier komen categorieën!'; 
} 

在另一方面,如果你的控制器是由一個擴展可以使用$this關鍵字來獲取方法。

當您安裝新的yii web應用程序時,基本控制器將在/protected/components/Controller.php之下,所有控制器將擴展該控制器。所以如果你把你的方法放在那個控制器中,它可以通過從基礎控制器擴展的所有控制器訪問。

+0

這不起作用。我在主題文件中,而不是控制器頁面本身。那麼,如何在另一個頁面中調用另一個類? – Refilon 2014-11-03 10:09:20

+0

@ Deer-Outdoor.nl在所有條件下,您將在控制器中使用此主題。你永遠不會單獨使用該主題文件。另外,在每個視圖中'$ this'指代呈現視圖的控制器。你可以在你的基礎控制器中定義你的方法,並在'$ this-> methodName()' – 2014-11-03 10:14:23

+0

的主題主文件中使用它。我明白你的意思。如果我轉到admincontroller頁面,它可以工作。但我希望它也能在我在站點控制器中說的時候工作。但那不行。我怎樣才能解決這個問題? – Refilon 2014-11-03 10:17:32