网站中常常会有一个问题选集页面,即是常常用到的FAQ页面。建立保存问题的数据表:faq表,表的结构如图:
在控制器中查询结果集并渲染视图:
/**
* FAQ
*/
function actionFaq(){
//查询结果并按type字段顺序及faqweight字段逆序排序
$f = Faq::find() -> order('type ASC, faqweight DESC') -> getAll();
$faq_arr = array();
//按问题类型分类并将数据保存到数组中
foreach ($f as $value)
{
if(empty($faq_arr[$value -> type]))
{
$faq_arr[$value -> type]['faqque'][] = $value -> faqques;
$faq_arr[$value -> type]['faqansw'][] = $value -> faqansw;
}else{
$faq_type_num = count($faq_arr[$value -> type]['faqque']);
$faq_arr[$value -> type]['faqque'][$faq_type_num] = $value -> faqques;
$faq_arr[$value -> type]['faqansw'][$faq_type_num] = $value -> faqansw;
}
}
//渲染视图
$this -> _view['faq'] = $faq_arr;
/*
//dump($faq_arr);
//exit();
//这是另一种方法
$faq_type = Faq::find() -> setColumns('type') -> getAll() -> values('type');
$type = array_unique($faq_type);
$faq_arr = array();
foreach($type as $v)
{
$faq_arr[$v] = Faq::find() -> where('type = ?', $v)->getAll();
}
//dump($faq_arr);
$this -> _view['faq'] = $faq_arr;
*/
}
前台页面输出结果集:
<h1>Frequently Asked Questions (FAQ)</h1>
<div class="service_content">
<?php foreach ($faq as $type_name => $faq):; ?>
<div class="faq">
<h3><?php echo ucfirst($type_name); ?> Questions:</h3>
<?php foreach($faq['faqque'] as $k => $v):;?>
<div class="faqdetail">
<div class="faqques"><?php echo $v; ?></div>
<div class="faqansw" style = "display: none;"><?php echo $faq['faqansw'][$k]; ?></div>
</div>
<?php endforeach;?>
</div>
<?php endforeach; ?>
</div>