2015-01-10 3 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); 
    }, 
], 
관련 문제