Laravel迁移至Yii2:如何判断当前路由并动态显示文本/链接
Yii2实现路由判断的导航高亮
要在Yii2里实现和Laravel一样的效果,你可以通过以下两种方式判断当前路由:
方式一:判断控制器和动作ID
直接获取当前控制器和动作的ID进行判断,适合没有自定义路由规则的场景:
<?php $isContactPage = Yii::$app->controller->id === 'contact' && Yii::$app->controller->action->id === 'index'; ?> <?php if ($isContactPage): ?> <span class="contact-link active">contact</span> <?php else: ?> <a href="<?= Url::to(['/contact/index']) ?>" class="contact-link">contact</a> <?php endif; ?>
方式二:判断请求路由
如果你在config/web.php的urlManager里配置了自定义路由(比如把/contact映射到contact/index),可以直接对比请求的路由:
<?php if (Yii::$app->requestedRoute === 'contact/index'): ?> <span class="contact-link active">contact</span> <?php else: ?> <a href="<?= Url::to(['/contact']) ?>" class="contact-link">contact</a> <?php endif; ?>
说明
Yii::$app->controller->id:获取当前控制器的标识(你的ContactController对应contact)Yii::$app->controller->action->id:获取当前执行的动作标识(你的actionIndex对应index)Yii::$app->requestedRoute:获取当前请求对应的完整路由(格式为控制器ID/动作ID)
内容的提问来源于stack exchange,提问作者Hector
相关产品推荐
相关产品推荐

