PDA

View Full Version : clistView در داخل clistView



hooman.pro
یک شنبه 23 آذر 1393, 20:13 عصر
سلام بنده میخواستم یک صفحه داشته باشم که لیستی از تخصص ها رو نشون بده که تو پوشه ویو تخصص صفحه ایندکس به این صورت :


<h1>تخصص ها</h1>

<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_viewSpecialtyItem',
'ajaxUpdate'=>false,
'emptyText'=>'هیچ تخصص قابل نمایشی وجود ندارد.',
'enablePagination'=>true,
'template' => '{items} {pager}',

));



تا این جا کار هیچ مشکلی نیست و pagination هم به خوبی کار میکنه.
حالا تو صفحه _viewSpecialtyItem این کد ها رو نوشتم:




<?php
$a= a::model()->with(array(
'specialties'=>array(
'together'=>true,
'condition'=>'specialties.id='.$data->id,
),
)
);
$dataProvider=new CActiveDataProvider($a,
array(
'pagination'=>array(
'pageSize'=>1,
),
)
);
?>

<?php echo $data->name;?>
<br/>

<h1>a</h1>

<?php

$this->widget('zii.widgets.CListView', array(
'id'=>'doctors-'.$data->id,
'dataProvider'=>$dataProvider,
'itemView'=>'_viewA',
'ajaxUpdate'=>true,
'emptyText'=>'هیچ aقابل نمایشی وجود ندارد.',
'enablePagination'=>true,
'template' => '{items} {pager}',

));


خوب مشکلی که به وجود اومد این بود که با این که از مدل a مربوط به تخصص های مختلف رکورد در دیتابیس بود اما فقط برای اولین a پیجینیشن اضافه شد و برای بقیه نوشت : هیچ a قابل نمایشی وجود ندارد. وقتی که متغییر $a رو var_dump کردم، دیدم که تو فیلد condition در دفعه اول بوده: specialties.id=1 اما دفعه دوم شده specialties.id=1 and specialties.id=2 و به همین ترتیب برای سومی و چهارمی. یعنی خودکار شرط قبلی رو هر بار اضافه کرده.

حالا سوال این که اولا چی کار میشه کرد که این درست بشه و شرط رو با قبلی اند نکنه؟ و این که من مجبور شدم که کد مربوط به تولید دیتاپرووایدر رو داخل ویو بزارم (البته دیتاپرووایدر مربوط به تخصص داخل کنترولر هست) این یه کم احساس میکنم mvc رو رعایت نکردم. اصلا درست احساس میکنم یا کارم درست بوده؟ اگر درست نبوده باید چی کار میکردم؟

و اینکه سر انجام با اضافه کردن findAll به انتهای اون مدل چهار نقطه برای a و تغییر از cActivedataProvider به CArrayDataProvider مشکلم حل شد. اما این کار فکر کنم خوب نباشه چون اول کلش رو لود میکنه بعد pagination روش میزاره.


اساتید محترم لطفا این سوال رو کامل جواب بدین چون نصف درگیری و مشغله ذهنی من با yii سر همین دیتا پرووایدر هست. خیلی ممنون

hooman.pro
جمعه 28 آذر 1393, 12:36 عصر
ماشاالله توقع نداشتم این همه جواب بدین دوستان. کسی نظری نداره واقعا؟ کسی تاحالا مثلا یک صفحه ای نداشته تو پروژش که پست ها رو با clist view نمایش بده بعد بخواهد نظراتشون رو هم به صورت مثلا دکمه نمایش بیشتر نشون بده؟ یا همچین چیزی؟ خوب چی کار کردین؟ استاد شهرکی عزیز شما هم نیستید؟ شما بفرمایید کمی توضیح بدین

MMSHFE
شنبه 29 آذر 1393, 13:06 عصر
والا من خودم شخصاً با این کنترلها زیاد کار نمیکنم (چون با قالب اختصاصی خودم باید بنویسم) و راحتترم که با Relational ActiveRecord اطلاعات رو بگیرم و نمایش بدم.

engmmrj
شنبه 29 آذر 1393, 14:37 عصر
والا من خودم شخصاً با این کنترلها زیاد کار نمیکنم (چون با قالب اختصاصی خودم باید بنویسم) و راحتترم که با Relational ActiveRecord اطلاعات رو بگیرم و نمایش بدم.
با ClistView که راحتره خودش pagination و ... درست میکنه

MMSHFE
شنبه 29 آذر 1393, 17:58 عصر
وقتی پای قالب اختصاصی بیاد وسط و درگیر Customize کردن کنترلها بشین، ترجیح میدین زحمتهای جزئی و موارد کوچکی مثل Pagination رو خودتون پیاده سازی کنید و دستی یا با کلاسهای Helper که خودتون مینویسید، کار کنید.