اجرای View و استفاده از خروجی آن در کدنویسی

نسخه ی views مورد بحث: 6.x-2.16

منظور از اجرای View این است که می خواهیم خروجی یک View را به صورت یک آرایه در برنامه مان استفاده کنیم.

هر View، به چند طریق می تواند استفاده شود:

  • طریقه‌ی معمول که عبارت است از قرار دادن View در یک Block یا در یک Page یا ... که دروپال به صورت خودکار  View را اجرا می کند و خروجی آن Render شده و به کاربر نمایش داده می شود.
  • اجرای View در برنامه نویسی به این صورت که View فراخوانی می شود و خروجی آن به صورت یک آرایه‌ی ساخت یافته در برنامه Return می شود. در این حالت View رندر نمی شود و می توان از ساختمان داده ی آن استفاده‌ی بهینه کرد.
  • ...

در زیر چند تا نمونه را معرفی می کنم:

توجهجهت آزمایش، می توانید یک View ایجاد کنید که لیست node هایی که منتشر شده اند و نوع آن ها story است را نشان دهد. و مثال های این قسمت را بر روی آن انجام دهید.
در زیر من کد Export گرفته شده ی این View را برای استفاده ی شما قرار می دهم که می توانید آن را Import کنید تا View ی مورد نظر ایجاد شود.

فایل ضمیمه شده است. views_test.txt

روش اول

می خواهیم View را اجرا کنیم و خروجی HTML حاصل از Render شدن View را در برنامه استفاده کنیم:

$view = views_get_view('{view name}');
$display_id = 'default';
$view->set_display($display_id);
$view->execute();

print $view->preview();

طرز کار کد فوق به این صورت است که:

1 - ابتدا، با استفاده از تابع views_get_view() آبجکت یک View را به دست می آوریم.
این متد، نام View را به عنوان آرگومان دریافت می کند و یک آبجکت View برمیگرداند.

توجه کنید که برای به دست آوردن نام View باید به آدرس URL صفحه ی ویرایش View دقت کنید. مثلا در مثال ما، آدرس صفحه‌ی ویرایش View عبارت است از:
/admin/build/views/edit/example_view
که نام View می شود : “example_view”

2 - آبجکت View که برگردانده می شود دارای تعداد زیادی خصوصیت و متد است. یکی از متد های این آبجکت، متد set_display() می باشد.
متد set_display() نام یک display را به عنوان آرگومان دریافت می کند و display فعال در آبجکت view را تنظیم می نماید.

برای به دست آوردن نام display، صفحه ی ویرایش View را باز کنید و موس را بر روی تب افقی متعلق به Display مورد نظرتان بیاورید. در پایین پنجره ی مرورگر، آدرس URL آن نقطه نمایش داده می شود. بخش انتهایی آدرس URL نام display را نشان می دهد.

تصویر چگونگی نمایش دادن نام Display در هنگام ویرایش View

در مثال ما، نام display ها عبارت است از:
default, page_1
همان طور که می بینید نام Display ها به این صورت نام گذاری می شود که نوع Display بعلاوه یک آندلاین و شمارنده ی Display می باشد. مثل page_1, page_2 , …

3 - پس از این که Display پیش فرض را در آبجکت View تنظیم کردیم، می توانیم آن را با فراخوانی متد execute() اجرا کنیم. متد execute سبب می شود که View اجرا شود و خروجی آن نیز در داخل آبجکت قرار گیرد. یعنی آبجکت View بعد از فراخوانی متد execute نتایج اجرا را نیز شامل می شود. که در خاصیت result آن قرار گرفته است.

4 - متد preview از آبجکت view، خروجی view را Render می کند و به فرمت HTML باز می گرداند که می توان مستقیما آن را print گرفت.

روش دوم

می توان با متد execute_display() از آبجکت view مستقیما یک display خاص از view را اجرا کنیم و خروجی HTML آن را به دست آوریم. (در این حالت دیگر نیازی به استفاده از متد set_display() نمی باشد.)

$view->execute_display(’{display name}’, ‘{arguments}’)

این متد دو تا آرگومان دریافت می کند که اولی نام Display مورد نظر است و دومی یک آرایه شامل آرگومان ها جهت ارسال به View می باشد. اگر View ی مورد نظر دارای آرگومان نباشد،می توان یک آرایه ی خالی ارسال کرد. array()

print $view->execute_display(‘default’, array());

مطالب مرتبط:

نظرات شما

قسمت نظرات با استفاده از سرویس دیسکاس پیاده سازی شده است. متاسفانه این سرویس از داخل ایران قابل دسترس نیست. لطفا از آی پی خارجی استفاده کنید.