请参阅GridView中的Yii2 ActiveRecord / model列?

时间:2015-01-10 02:38:30

标签: gridview activerecord yii2

我试图让这个stackoverflow代码(URL in yii2 gridview)实际上与我的联系人记录显示Last_Name并在单击Last_Name时实际生成mailto:链接。

我的代码显示静态文本和静态链接,但我不知道如何正确引用活动记录。

我也不想做“查找”并且基本上做一个子查询...这似乎非常浪费。

<?= GridView::widget([
'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        // ['class' => 'yii\grid\SerialColumn'],

        //'contact_id',
        'contact_frequency',

        [
            'label' => 'Last Name',
            'format' => 'raw',
            'value' => function ($data) {
                return Html::a(Html::encode('replace with $contact->last_name'),'replace with $contact->email1:email');
            },
        ],

        'first_name',
        // 'title',
        'email1:email',
        'last_touch_date',
        'last_contact',
        ['class' => 'yii\grid\ActionColumn', 'template' => '{view}'], 
    ],
]); ?>

2 个答案:

答案 0 :(得分:2)

由于文字和链接不同,因此您无法使用内置email formatter

但是Yii 2 Html助手有特殊方法mailto()来处理这个问题所以我建议使用它而不是手动构建链接。

电子邮件格式化程序也会调用此帮助程序,但使用相同的文本和电子邮件。

在这种情况下,代码将是:

use yii\helpers\Html;

...

[
    'label' => 'Last Name',
    'format' => 'raw',
    'value' => function ($model) {
        return Html::mailto($model->last_name, $model->email);
    },
],

答案 1 :(得分:0)

对于像我这样的新手。看来$dataActiveRecord的问题。

return Html::a(Html::encode($data->last_name), 'mailto:' . $data->email1);