استفاده از آرایه از پیش تعریف شده در گرید ویو

[rtl]

سلام

چون در همه سطرهای گرید ویو قرار هست که بره و از دیتابیس یک سری اطلاعات را بگیره و مدلم هم با اون جدول رابطه نداره برای همین میخوام اطلاعات جدول را بگیرم و در یک آرایه ذخیره کنم و در سطر های گرید ویو برم و از اون ارایه بخونم و کدم هم به صورت زیر هست

[/rtl]

[rtl]

اما این کد را بمن خطا میده و میگه$role در گرید ویو تعریف نشده هست

اگر ممکن هست راهنمایی کنید

[/rtl]

[right][rtl][font="Tahoma"]

سلام

ببینید gridview یک widget هست که وظیفه ش نمایش جدولی داده هایی است که به عنوان ورودی بهش میدیم

بنابراین تعریف، مثل همه widget های دیگه، اون فقط داده های ورودی رو از ما میگیره و به شکل مورد نظر نمایش میده. متغیرهای $role و $unit که شما تعریف کردید، در scope گریدویو قرار ندارند و از نظر اون تعریف نشده هستند. چون ورودی gridview چیز دیگه ای هست و از وجود متغیرهای محلی دیگه خبر نداره

ورودی gridview پارامتر dataprovider هست که شما با تابع $model->search() بهش مقدار دادید.

طبیعتا شما هر داده ای که میخواهید gridview لیست کنه رو باید به عنوان ورودی بهش بفرستید و بعدش باقی config هارو انجام بدید

برای اینکه داده هایی که از طریق مدل و از دیتابیس نمیان رو با gridview نمایش بدید اما راهی وجود داره. باید از CArrayDataProvider استفاده کنید. منطقش این هست که داده هاتون رو لود میکنید و بعد با استفاده از کلاسی که نام بردم اونهارو convert میکنید تا برای gridview قابل فهم و نمایش باشه

با فرض اینکه داده های مورد نظرتون رو در متغیر $yourCustomArray قرار دادید، کد زیر عمل convert رو انجام میده:

[/font][/rtl][/right]




    $dataProvider=new CArrayDataProvider($yourCustomArray, array(

      'id'=>'results-grid',

      'keyField' => 'id',

      'pagination'=>array(

        'pageSize'=>15,

      ),

    ));



[right][rtl][font="Tahoma"]

البته قطعه کد بالا فقط برای کمک به مطلب اومده، حتما نمونه های بهتری در منابع میتونید پیدا کنید

[/font][/rtl][/right]

[right][rtl][font="Tahoma"]

متشکرم

جوابتون خیلی جامع و مفید بود

[/font][/rtl][/right]