2013-03-07 26 views
1

我正在開發基於cms的Yii應用程序。我最近完成了後端的頁面,現在可以從數據庫中獲取頁面。如何爲Yii請求的動態頁面設置站點/域控制器

問題始於獲取請求的URL並呈現動態佈局。

什麼是去了解這一點的最好方法是什麼?就像使用起始站點/域控制器一樣,我該如何設置它?

使用CMenu進行渲染的模板效果很好。該菜單顯示在前端。以下是我目前使用的/ home和/ company/products菜單鏈接的示例。它使用乾淨的網址。

<ul id="yw0"> 

<li class="active"><a href="/home">Home</a></li> 
<li><a href="/about_us">About us</a></li> 
<li><a href="/company">Company</a></li> 

    <ul> 
     <li><a href="/company/products">Products</a></li> 
     <li><a href="/company/services">Services</a></li> 
    </ul> 

<li><a href="/contact">Contact</a></li> 

</ul> 

但是,這是一個點。該佈局需要從後端的特定頁面動態加載。每個頁面可以有不同的佈局。數據庫中有一列。因此,例如url:「http://example.com/home」需要加載'protected/views/layouts/main.php'

目前鏈接如:「http://example.com/company/products」不會去任何地方。這很明顯,因爲這些鏈接不存在並且是動態創建的。

我想我需要做兩件事情:

  • 來撥打startController每個請求到達,並且將處理的頁面和佈局的加載。
  • 和兩個一些設置與乾淨的Url。?

就是這樣。

我可以想象它沒有太多的工作。但它讓我頭疼。

尤其是乾淨的網址。他們一直對我感到困惑。

index.php?r =站點/索引將轉到siteController和動作索引。

但這不是我想要的。我也嘗試設置'urlManager',但它去了一個控制器和一個動作。像page/default/view/id /。但我不想去一個動作,而只是從數據庫加載(下一個)所請求的頁面(具有不同的佈局)的開始控制器。

我需要設置乾淨的URL某處配置文件main.php

希望它很容易明白我想實現。任何幫助是極大的讚賞。

回答

1

您可以在控制器中設置佈局,也可以像這樣在單個控制器的每個動作中設置不同的佈局。

public function actionActionname() 
{ 
    $this->layout = 'front_layout'; 
    //Do the actions 
    $this->render('renderVariable'); 
} 

並以品種控制器佈局,可以這樣設置:

class ControllerName extends Controller 
{ 
    public $layout = '//layout path'; 
+0

感謝您的答覆。事情是在控制器中設置代碼的佈局並不是真正的動態。但主要問題是我如何做一個啓動控制器。一個入口控制器。和乾淨的網址。我再次嘗試過網址管理器。現在它轉到:yiitest/frontend/index.php/home。正如你可以看到它使用數據庫中的主頁URL。但我得到 錯誤404 無法解決請求「家」。 但是如何以及在哪裏設置入口控制器。 「protected/controllers /」中的SiteController和pageController不會被調用。 編輯:對不起,第一次使用stackoverflow – Minahalmon 2013-03-07 11:14:17

相關問題