Yii2 面包屑的两种不同方式

Yii2 Two different way for breadcrumbs

我有一个 gii 生成的 view.php 页面,可以从两个不同的路径访问它,但面包屑是相同的。有人知道如何解决吗?

让我解释一下:我有 view.php 视图,它显示了所做报告的摘要,可以从两个路径到达:

  1. 您有 2 个选项可以知道它来自哪里:
  • 在每个 link 或重定向中发送查询变量以手动构建面包屑。喜欢:$value = Yii::$app->request->getQueryParam('breadcumb')

  • 其他选项是获取推荐人 url。并根据您可以将其传递给开关的值。您可以使用以下方式获取推荐人的 url:$value = Yii::$app->request->getReferrer().

  1. 然后切换构建 link:

    switch(value) {
      case 'creation':
       $label = 'CREATION';
       $url = 'url_of_creation';
       break;
      case 'summary':
       $label = 'SUMMARY';
       $url = 'url_of_summary'; 
       break;
    }
    
  2. 然后就做这样的事情:

$this->params['breadcrumbs'][] = ['label' => $label, 'url' => $url];

这是一个简短的面包屑解决方案,使用 match():

$this->params['breadcrumbs'][] = match($path) {
    'creation' => ['label' => 'Creation', 'url' => Url::to['creation'],
    'summary' => ['label' => 'Summary', 'url' => Url::to['summary'],
};

$path 应在控制器中设置或由 Yii::$app->request->getReferrer() 确定。

请注意,这需要 PHP8。