برای اضافه کردن فیلد به گرید ویو به شکل زیر عمل کرده
- ابتدا در سرچ مدل یک پروپرتی جدید ایجاد کرده و آن پروپرتی را در متد rule کلاس سرچ مدلمان اضافه می کنیم. به طور مثال در کد زیر فیلد mobile در مدل customer قرار دارد و گریدویو ما از مدل دیگری است به طور مثال مدل order
class OrderSearch extends Order
{
public $mobile;
/**
* @inheritdoc
*/
public function rules()
{
retu [
[['mobile'], 'safe'],
];
}
}- سپس در متد search از کلاس OrderSearch به صورت زیر عمل می کنیم. و توسط متد joinwith با مدل customer توسط نام ریلیشن که دراینجا customer است ارتباط برقرار می کنیم
public function search($params)
{
$query = Order::find();
// add conditions that should always apply here
$query->joinWith('customer');
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to retu any records when validation fails
// $query->where('0=1');
retu $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
]);
$query->andFilterWhere(['like', 'customer.mobile', $this->mobile]);
retu $dataProvider;
}- حالا در نهایت در گریدویو مربوطه می توان به شکل زیر عمل کرد:
[
'attribute' => 'mobile',
'label' => 'Customer Mobile',
'format' => 'raw',
'value' => function ($dataProvider) {
retu (isset($dataProvider->customer->mobile) ? $dataProvider->customer->mobile : '');
},
],
برنامه نویس...
ما را در سایت برنامه نویس دنبال میکنید
برچسب:
نویسنده: خنجی
بازدید: 277
تاريخ: پنجشنبه
7 ارديبهشت
1396 ساعت: 12:16