چون در همه سطرهای گرید ویو قرار هست که بره و از دیتابیس یک سری اطلاعات را بگیره و مدلم هم با اون جدول رابطه نداره برای همین میخوام اطلاعات جدول را بگیرم و در یک آرایه ذخیره کنم و در سطر های گرید ویو برم و از اون ارایه بخونم و کدم هم به صورت زیر هست
[/rtl]
[rtl]
اما این کد را بمن خطا میده و میگه$role در گرید ویو تعریف نشده هست
ببینید gridview یک widget هست که وظیفه ش نمایش جدولی داده هایی است که به عنوان ورودی بهش میدیم
بنابراین تعریف، مثل همه widget های دیگه، اون فقط داده های ورودی رو از ما میگیره و به شکل مورد نظر نمایش میده. متغیرهای $role و $unit که شما تعریف کردید، در scope گریدویو قرار ندارند و از نظر اون تعریف نشده هستند. چون ورودی gridview چیز دیگه ای هست و از وجود متغیرهای محلی دیگه خبر نداره
ورودی gridview پارامتر dataprovider هست که شما با تابع $model->search() بهش مقدار دادید.
طبیعتا شما هر داده ای که میخواهید gridview لیست کنه رو باید به عنوان ورودی بهش بفرستید و بعدش باقی config هارو انجام بدید
برای اینکه داده هایی که از طریق مدل و از دیتابیس نمیان رو با gridview نمایش بدید اما راهی وجود داره. باید از CArrayDataProvider استفاده کنید. منطقش این هست که داده هاتون رو لود میکنید و بعد با استفاده از کلاسی که نام بردم اونهارو convert میکنید تا برای gridview قابل فهم و نمایش باشه
با فرض اینکه داده های مورد نظرتون رو در متغیر $yourCustomArray قرار دادید، کد زیر عمل convert رو انجام میده: