Yii检查是否主页

时间:2012-09-09 18:35:22

标签: php yii yii-url-manager

Yii中是否有buildin方法或属性来检查页面是否为主页?

我知道我可以使用这样的东西:

$controller = Yii::app()->getController();
$isHome = $controller->getAction()->getId() === 'index' ? true : false;

或者把它放在主控制器的方法中,但我正在寻找更清洁的东西。

感谢。

9 个答案:

答案 0 :(得分:13)

如果要检查当前页面,即action是当前控制器的默认值..

$controller = Yii::app()->getController();
$isHome = $controller->action->id === $controller->defaultAction->id ? true : false;
  

dafeultaction可能并不总是' index',它可以改变,所以你   需要将它与defaultAction进行比较..

如果您指的是网站的defult页面,那么您需要将您的控制器与defaultController进行比较..

$controller = Yii::app()->getController();
$default_controller = Yii::app()->defaultController;
$isHome = (($controller->id === $default_controller->id) && ($controller->action->id === $controller->defaultAction->id)) ? true : false;

在Yii2:

$controller = Yii::$app->controller;
$default_controller = Yii::$app->defaultRoute;
$isHome = (($controller->id === $default_controller) && ($controller->action->id === $controller->defaultAction)) ? true : false;

答案 1 :(得分:6)

这是我用来检查我是否在首页上的内容:

$isFrontpage = false;
if ((Yii::app()->controller->getId().'/'.Yii::app()->controller->getAction()->getId()) == 'site/index'  ) { 
    $isFrontpage = true;
}

就像魅力......甚至在观点上......

答案 2 :(得分:2)

可能会帮助你:)。

<?php
  $controllerl = Yii::$app->controller;
  $homecheker = $controllerl->id.'/'.$controllerl->action->id;
  if($homecheker=='site/index')
  {
     //no border on home page
     $mymaincls ='main-nav navbar-fixed-top';
  }else
  {
     //border all other page
     $mymaincls ='main-nav navbar-fixed-top header-border';
  }
?>

答案 3 :(得分:1)

如果通过'首页'表示'首页',那么您可以检查this extension,确切地说就是这样。

答案 4 :(得分:1)

您可以使用扩展程序页面检查器检查主页:

http://www.yiiframework.com/extension/pagechecker

答案 5 :(得分:1)

您可以将当前控制器和操作与默认控制器和操作进行比较。

$controller = Yii::app()->getController();

$default_controller = Yii::app()->defaultController;

$isHome = $controller->getId() === $default_controller && $controller->getAction()->getId() === 'index';

我无法通过 Yii :: app()访问默认操作,例如 Yii :: app() - &gt; defaultController 。但是你使用字符串进行比较。

欢呼

答案 6 :(得分:1)

$check_home=$path=='site/index.html'?'TRUE':'False';

$path=Yii::$app->request->pathInfo;
如果check_home为true或false,

按照你的逻辑做

我正在主页上移除我的侧边栏

答案 7 :(得分:1)

if(Url::current() == '/index.php?r=site%2Findex' || Url::current() == Url::home()){

答案 8 :(得分:0)

namespace common\helpers;

class Url extends \yii\helpers\Url
{
    public static function isHome()
    {
        return (self::home() == Yii::$app->request->url);
    }
}