Yii2基本gridview仅包含标题和值

Yii2基本gridview仅包含标题和值,yii2,widget,Yii2,Widget,我想显示关联查询的数据。。。(控制员): …就像一个非常基本的gridview,没有寻呼机、摘要等,只有包含数据的纯标题。其主要思想是将其显示为一个简单转置的detailview,这样我就可以从左到右而不是从上到下查看数据,比如一个简单的Excel表格 yii中有这样一个简单的小部件吗?因为GridView不是这样工作的,在我尝试调整查询以匹配GridView的条件之前,也许有人可以给我一个提示,我可以更轻松地实现我想要的。你能给我指一下正确的方向吗?非常感谢 为此扩展DetailView,并使

我想显示关联查询的数据。。。(控制员):

…就像一个非常基本的gridview,没有寻呼机、摘要等,只有包含数据的纯标题。其主要思想是将其显示为一个简单转置的detailview,这样我就可以从左到右而不是从上到下查看数据,比如一个简单的Excel表格


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([
    // ...
]) ?>