2015-01-10 54 views
1

我试图让这个stackoverflow代码(URL in yii2 gridview)实际上与我的联系人记录中显示的Last_Name绑定,并在单击Last_Name时实际生成一个mailto:链接。请参阅GridView中的Yii2 ActiveRecord/model列?

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

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

<?= 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

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

return Html::a(Html::encode($data->last_name), 'mailto:' . $data->email1); 
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); 
    }, 
],