【问题标题】:YII - CDetailView: link to another pageYII - CDetailView:链接到另一个页面
【发布时间】:2013-09-04 13:35:05
【问题描述】:

在 CDetailView 中,如何将给定值链接到另一个页面?假设我有一本书属于图书类别,例如科幻小说。图书详情页显示以下数据:

Book title: Dune
Author: Frank Herbert
Category: Science Fiction --> link 

科幻小说应该是指向/category/view的链接,就像下面的代码一样,这对我不起作用:

大批( '标签' => '类别', '价值' => $model->category->name, 'urlExpression'=>'Yii::app()->createUrl("category/view", 数组(“cid”=>$data->category_id))', 'class'=>'CLinkColumn', ),

我得到的印象是 urlExpression 不适用于 CDetailView。它是类 CLinkColumn (» CGridColumn » CComponent) 的属性,所以我在这里走错了路。处理这个问题的正确方法是什么?

【问题讨论】:

  • 你从哪里得到 urlExpression ?
  • 我认为您应该在列表视图中,并且此列表应包含指向详细列表的链接
  • 即使您已经在细节视图中,您仍然有关系并且模型已加载;所以……你拥有一切;试试吧
  • 关系有效,但现在显示 URL 对我来说是另一回事。总的来说,我对 YII 和这些框架比较陌生,所以需要反复试验。

标签: yii


【解决方案1】:
$this->widget('CDetailView', array(
'data'=>$model,
'attributes'=>array(
    'title',
    'author',
    array(
        'name'=>'Category',
        'type'=>'raw',
        'value'=>CHtml::link('Link Title', 'url'),
    ),
    ...

【讨论】:

  • 谢谢!这就是我要找的。​​span>
  • “链接标题”可以使用$model->category->name,“url”可以使用array('category/view', 'id'=>$model->category_id)
【解决方案2】:

您混淆了 CDetailViewCGridView

urlExpression 是一个CLinkColumn 属性,CLinkColumns 用于CGridViews 的columns 属性。

CDetailView 只有一个 attributes 属性。

我猜你可以在 value 属性中生成你的 url 并使用 type = raw 来显示它

【讨论】:

  • 谢谢。我正在寻找一种方法来让它工作,遵循正确的方式。我使用 CDetailView 是因为教程,而不是出于任何特殊原因。因此,如果可以解决问题,我可以使用 CGridView。使用原始选项可能不是首选方式。这对我来说是一个学习项目,所以我更喜欢以正确的方式学习它。
  • @rxt,在这种情况下使用原始值是完全可以接受的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 2013-12-13
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2021-12-17
  • 2020-05-13
相关资源
最近更新 更多