Drupal有一個叫做「drupal_is_front_page」的功能。 YII有類似的方式來處理導航嗎?如何使用YII檢查當前頁面是否爲首頁?
回答
不幸的不是。儘管將這些信息拼湊在一起所需的信息是可用的,但這樣做實際上比應該更痛苦。
開始時,首頁由CWebApplication::defaultController
屬性定義,該屬性可以在權威指南中配置爲discussed。但是這裏有一個大問題:defaultController
實際上可以是以下任何一種:
- 一個空的控制器名稱,例如,
site
- 模塊/控制器對,例如,
module/site
- 控制器/動作對,例如,
site/index
- 模塊/控制器/動作元組,例如,
module/site/index
如果您所指定的defaultController
爲#4(這是一樣的#3,如果你的應用程序不包含任何模塊),那麼一切都很簡單:
function is_home_page() {
$app = Yii::app();
return $app->controller->route == $app->defaultController;
}
的問題是,如果defaultController
被指定爲#1或#2,那麼您必須檢查大量運行時信息以將其轉換爲形式#3或#4(如適用),以便您可以運行相等性檢查。
當然的Yii已經包含的代碼,可以做到這一點:在CWebApplication::createController
方法,它可以接受任何的有效格式defaultController
並解決給控制器/動作對(其中,控制器是依賴於模塊上,如果適用的話) 。但看着源頭不會讓你在預期中微笑。
概括起來:你可以認爲defaultController
總是被完全指定和落榜用一行代碼完成,或者從createController
借用代碼,以確定到底是什麼defaultController
點(然後用一條線的代碼來檢查是否相等)。
我不建議考慮根據URL解決方案,因爲路線的整點是不同的URL可以指向相同的內容 - 如果你走那條路,不能確保你有正確的結果。
根據我的經驗,Yii沒有這樣的功能。但是,您可以檢索如下:
- 基地網址:
Yii::app()->request->baseUrl
- 當前網址:
Yii::app()->request->requestUri.
- 當前頁面控制器
Yii::app()->getController()->getAction()->controller->id
。
有了這些API,應該有可能找出當前頁面是否是首頁。
另一個簡單的想法:
在你的行動(即一個你用它來展示你的主要頭版「),您可以設置它認爲使用腳本變量:
Yii::app()->getClientScript()->registerScript("main_screen",
"var main_front_page = true;",CClientScript::POS_BEGIN);
將該代碼放在「主視圖」中,(其餘視圖頁面沒有這段代碼)。 所以當你需要檢查,如果一個頁面是「主頁」,你可以檢查使用javascript它,quering爲:
if(main_front_page){..do something..}.
,如果你需要認識到在PHP主頁(在服務器端)使用Jon提出的方法。
另一種解決方案的基礎上,爲控制器的常用方法:
你的控制器,所有的人都必須從CController延伸,但是,當你建立一個新的新鮮Yii應用GII上創建/保護/組件的基本控制器/Controller.php所以你的所有控制器都是從它派生出來的。
所以,穿上它的主屬性,命名爲:
<?php
class Controller extends CController {
public $is_main_front_page;
public function setMainFrontPage(){ $this->is_main_front_page = true; }
public function getIsMainFrontPage(){ returns $this->is_main_front_page==true; }
}
?>
好,當你呈現你的主要頭版行動,成立這個核心varible爲真:未來
<?php
class YoursController extends Controller {
public function actionPrimaryPage(){
$this->setMainFrontPage();
$this->render('primarypage');
}
public function actionSecondaryPage(){
$this->render('secondarypage');
}
}
,在任何看法,你可以檢查它:
<?php // views/yours/primaryview.php
echo "<h1>Main Page</h1>";
echo "is primary ? ".$this->getIsMainFrontPage(); // must say: "is primary ? true"
?>
<?php // views/yours/secondaryview.php
echo "<h1>Secondary Page</h1>";
echo "is primary ? ".$this->getIsMainFrontPage(); // must say: "is primary ? false"
?>
- 1. 如何檢查當前頁面是否是Ionic2的主頁?
- 2. 檢查當前頁面是否爲WordPress的作者頁面
- 3. jquery檢查所選頁面是否爲當前頁面
- 4. 如何檢查當前頁面是否在ASP.Net中使用SSL?
- 5. 檢查當前頁面是否是wordpress中的分類頁面?
- 6. 檢查當前頁面是否爲Jekyll上的主頁
- 7. mediawiki:檢查當前頁面是否被刪除頁面
- 8. Windows 10開發:如何檢查當前頁面是否是特定頁面?
- 9. 將當前頁面設置爲首頁
- 10. 如何區分當前頁面是否爲EPiServer頁面
- 11. MediaWiki自定義皮膚:檢查當前頁面是否爲主頁面
- 12. vBulletin檢查當前頁面是否爲usercp.php?
- 13. 如何檢查當前Facebook用戶是否喜歡使用PHP SDK的頁面?
- 14. WordPress的:檢查當前頁面之前或之後是否有兄弟頁面?
- 15. 如何檢查它是否是主頁/首頁?
- 16. 如何檢查當前頁面是否是wordpress中的插件管理面板
- 17. shopify我需要檢查當前頁面是否爲收集頁面而不是單個產品頁面
- 18. Umbraco:檢查當前頁面是否爲帶有id或名稱爲'xxx'的頁面的子頁面
- 19. PunBB檢查它是否是首頁
- 20. 檢查當前頁面是否是索引中的索引
- 21. 如何使用MySQL檢查頁面是否爲空?
- 22. 如何檢查頁面是否存在?
- 23. yii檢查用戶是否被重定向到登錄頁面
- 24. 如何使用Yii的CActiveDataProvider設置當前頁面?
- 25. 即使當CausesValidation爲false時,檢查頁面是否有效
- 26. Woocommerce,如何查看當前頁面是訂單跟蹤頁面?
- 27. 離子2:如何檢查當前頁面是離子2中的根頁面?
- 28. 如何檢測AngularJS是否加載到當前頁面
- 29. 檢查當前頁面網址是否包含某些詞
- 30. 檢查當前請求是否來自httpmodule中的mvc頁面
你爲什麼要這樣做?對於導航,您可以使用控制器的「菜單」屬性來控制導航鏈接。 – Asgaroth