Yii2基本gridview仅包含标题和值
我想显示关联查询的数据。。。(控制员): …就像一个非常基本的gridview,没有寻呼机、摘要等,只有包含数据的纯标题。其主要思想是将其显示为一个简单转置的detailview,这样我就可以从左到右而不是从上到下查看数据,比如一个简单的Excel表格Yii2基本gridview仅包含标题和值,yii2,widget,Yii2,Widget,我想显示关联查询的数据。。。(控制员): …就像一个非常基本的gridview,没有寻呼机、摘要等,只有包含数据的纯标题。其主要思想是将其显示为一个简单转置的detailview,这样我就可以从左到右而不是从上到下查看数据,比如一个简单的Excel表格 yii中有这样一个简单的小部件吗?因为GridView不是这样工作的,在我尝试调整查询以匹配GridView的条件之前,也许有人可以给我一个提示,我可以更轻松地实现我想要的。你能给我指一下正确的方向吗?非常感谢 为此扩展DetailView,并使
yii中有这样一个简单的小部件吗?因为GridView不是这样工作的,在我尝试调整查询以匹配GridView的条件之前,也许有人可以给我一个提示,我可以更轻松地实现我想要的。你能给我指一下正确的方向吗?非常感谢 为此扩展DetailView,并使用您的类。类似(假设为基本项目模板):
为什么不扩展DetailView并制作一个能像您所希望的那样显示数据的视图呢?修改
$template
和renderAttribute()
,Bjorn Strongintherm是你叔叔。我会去看看,但我想我不是那么专业(我将尝试在一分钟内准备一些内容。最简单的方法是不带分页和searcModel的gridview..对于上面的查询,我想不是真的,因为它需要一个ActiveDataProvider和Totalcount…我已经尝试过了,并且遇到了很多错误消息:(很抱歉,但是我也必须定义名称空间吗…?是的。这取决于你把它放在哪里。请记住,在基本项目中,根名称空间是app
,而在高级项目中,它是frontend
,backend
,common
或console
。如果我把它放在yii2/widgets//code>(我知道这不好,但我只是想尝试一下,如果我能使它工作无论如何)没有名称空间(那么我想它必须是这样的)我得到了无法重新声明类我的朋友,你真的需要阅读更多关于PHP的内容。无论如何,我假设你已经有了基本的模板。在类中添加命名空间app\widgets
。将其保存在/widgets
文件夹中,作为MyDetailView.PHP
。将其与命名空间一起使用,如\app\widgets\MyDetailView::widget()
。是的,我知道这一点,我正在尽力做到最好。基本模板。无论如何,如果我按照你说的做,Class'app\widgets\yii\widgets\DetailView'找不到
$znw_a = Znw::find()->withA()->where(['znw.id' => $zg_id])->one();
...
return $this->render('create', [
...
'znw_a' => $znw_a,
namespace app\widgets;
use yii\widgets\DetailView;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
class MyDetailView extends DetailView
{
public $template = '<td>{value}</td>';
public $headerTemplate = '<th>{label}</th>';
public function run()
{
$rows = [];
$headers = [];
$i = 0;
foreach ($this->attributes as $attribute) {
list($row, $header) = $this->renderAttribute($attribute, $i++);
$rows[] = $row;
$headers[] = $header;
}
$options = $this->options;
$tag = ArrayHelper::remove($options, 'tag', 'table');
$topRow = Html::tag('tr', implode("\n", $headers));
$dataRow = Html::tag('tr', implode("\n", $rows));
echo Html::tag($tag, $topRow . $dataRow, $options);
}
protected function renderAttribute($attribute, $index)
{
if (is_string($this->template)) {
$row = strtr($this->template, [
'{value}' => $this->formatter->format($attribute['value'], $attribute['format']),
]);
} else {
$row = call_user_func($this->template, $attribute, $index, $this);
}
if (is_string($this->headerTemplate)) {
$header = strtr($this->headerTemplate, [
'{label}' => $attribute['label'],
]);
} else {
$header = call_user_func($this->headerTemplate, $attribute, $index, $this);
}
return [$row, $header];
}
}
use app\widgets\MyDetailView;
<?= MyDetailView::widget([
// ...
]) ?>