我试图让这个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}'],
],
]); ?>
答案 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)
对于像我这样的新手。看来$data
是ActiveRecord
的问题。
return Html::a(Html::encode($data->last_name), 'mailto:' . $data->email1);