2015-01-10 80 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); 
    }, 
],