it-swarm.asia

تنفيذ طريقة عرض دون التقديم

أود تنفيذ عرض برمجي (تقديم الحجج) والحصول على النتائج الأولية ، دون عرضها. هل هو ممكن؟

عندما أستخدم $view->preview('default', $args); فإنه يحول النتائج إلى HTML. أعلم أنه يمكنني استخدام $view->result لتكرار النتائج الأولية ، لكن العرض المخصص الذي أستخدمه في بعض الحقول هو عربات التي تجرها الدواب وتعطيني WSOD (ليس لدي أي اهتمام أو قدرة على إصلاح جهاز العرض ، إنها حالة Edge :))

أستخدم طرق العرض 3 مع Drupal 7

8
Daniel

هناك بالفعل وظيفة تقوم بما تريده بالضبط:

  $result = views_get_view_result('my_view_name', 'default', $arg1, $arg2, ...);

اقرأ المزيد في صفحتها على api.drupal.org:

https://api.drupal.org/api/views/views.module/function/views_get_view_result/7

7
Alexar

يتم استخدام $ view-> preview () بشكل عام لعرض الشاشة ببساطة ، وبعبارة أخرى سيتم عرضها عبر التنسيق المحدد.

$ view-> execute_display () يُرجع أيضًا العرض بالتنسيق ذي الصلة المحدد في العرض.

أعتقد أنه قد يتعين عليك نتيجة تنفيذ الاستعلام المباشر ، أي db_query ()

3
Colin McClure

يجب أن تحصل على بعض النجاح إذا حذفت view::preview() في رمزك الخاص ، ولكن قم بتغييره بحيث ، بدلاً من استدعاء ->display_handler->preview() ، فإنه يستدعي ->execute() بدلاً من ذلك:

$view = views_get_view($view_name);
$view->set_display($display_name);
$view->preview = TRUE;
$view->pre_execute($args);
$view->execute($display_name);

يجب أن ينجح هذا لأنه بالنسبة لمعظم معالجات العرض ، فإن استدعاء ...->display_handler->preview() هو في الواقع مجرد غلاف حول مكالمة مرة أخرى إلى view::render(). الذي يبدأ بنفسه عن طريق استدعاء $this->execute(...).

0
J-P