6

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

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

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

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

谢谢。

4

9 回答 9

13

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

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

dafeultaction 可能并不总是'index',它可以更改,因此您需要将其与 defaultAction 进行比较。

如果您的主页是指网站的默认页面,那么您还需要将您的控制器与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;
于 2012-09-10T04:12:35.610 回答
6

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

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

像魅力一样工作......即使在视图上......

于 2012-12-09T05:28:08.933 回答
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';
  }
?>
于 2016-05-20T07:41:33.093 回答
1

如果“主页”的意思是“首页”,那么您可以检查这个扩展程序正是这样做的。

于 2012-09-09T20:31:56.710 回答
1

您可以使用扩展 pageChecker 检查主页:

http://www.yiiframework.com/extension/pagechecker
于 2012-10-03T19:11:24.323 回答
1

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

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

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

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

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

干杯

于 2013-11-17T18:31:31.420 回答
1
$check_home=$path=='site/index.html'?'TRUE':'False';

$path=Yii::$app->request->pathInfo;

如果 check_home 是 true 或 false,请按照您的逻辑执行

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

于 2015-01-19T06:37:18.073 回答
1
if(Url::current() == '/index.php?r=site%2Findex' || Url::current() == Url::home()){
于 2015-04-30T16:15:48.710 回答
1
namespace common\helpers;

class Url extends \yii\helpers\Url
{
    public static function isHome()
    {
        return (self::home() == Yii::$app->request->url);
    }
}
于 2019-03-30T19:02:42.913 回答