برای اضافه کردن فیلد به گرید ویو به شکل زیر عمل کرده
- ابتدا در سرچ مدل یک پروپرتی جدید ایجاد کرده و آن پروپرتی را در متد rule کلاس سرچ مدلمان اضافه می کنیم. به طور مثال در کد زیر فیلد mobile در مدل customer قرار دارد و گریدویو ما از مدل دیگری است به طور مثال مدل order
class OrderSearch extends Order
{
public $mobile;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['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 return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([ 'id' => $this->id, ]);
$query->andFilterWhere(['like', 'customer.mobile', $this->mobile]);
return $dataProvider;
}
- حالا در نهایت در گریدویو مربوطه می توان به شکل زیر عمل کرد:
[ 'attribute' => 'mobile', 'label' => 'Customer Mobile', 'format' => 'raw', 'value' => function ($dataProvider) { return (isset($dataProvider->customer->mobile) ? $dataProvider->customer->mobile : ''); }, ],
برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید
برچسب : نویسنده : خنجی prog بازدید : 251 تاريخ : پنجشنبه 7 ارديبهشت 1396 ساعت: 12:16