Yii1中如何动态设置搜索结果页H1并显示关联表地名?
Yii1 实现搜索结果页H1显示地名及GridView标题方案
一、在H1标签中显示实际搜索地名
方法1:通过URL参数直接查询关联表
- 在对应控制器的action中获取URL参数:
// 替换为你实际的URL参数名,比如示例中的数值参数名 $placeId = Yii::app()->request->getQuery('place_id'); - 查询关联表模型获取地名(替换
Place为你的关联表模型名,name为实际存储地名的字段名):$placeModel = Place::model()->findByPk($placeId); $placeName = $placeModel ? $placeModel->name : '无匹配地名'; - 将地名变量传递到视图:
$this->render('search_result', array( 'placeName' => $placeName, 'dataProvider' => $dataProvider, // GridView所需的数据提供者 )); - 在视图的H1标签中输出:
<h1><?php echo CHtml::encode($placeName); ?></h1>
方法2:从GridView数据提供者中提取
如果你的GridView数据已经关联了地名信息,可直接从数据集提取:
- 确保控制器中查询时已关联对应表(
place为模型中定义的关联关系名):$dataProvider = new CActiveDataProvider('YourMainModel', array( 'criteria' => array( 'with' => 'place', 'condition' => 'place.id = :placeId', 'params' => array(':placeId' => $placeId), ), )); - 在视图中从数据集中提取地名:
$models = $dataProvider->getData(); $placeName = !empty($models) ? $models[0]->place->name : '无匹配地名'; - 同样在H1标签中输出即可,代码同方法1的第4步。
二、Yii1 GridView 添加标题的替代方案
Yii1的CGridView确实没有Caption属性,你可以直接在GridView组件上方添加HTML标题标签,比如:
<h2>地名搜索结果列表</h2> <?php $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider' => $dataProvider, 'columns' => array( // 你的列配置 'id', 'title', array( 'name' => 'place.name', 'header' => '地名', ), ), )); ?>
内容的提问来源于stack exchange,提问作者David Rhoden
相关产品推荐
相关产品推荐

