执行视图而不渲染


8

我想以编程方式执行视图(提供参数)并获取原始结果,而不渲染它。可能吗?

当我使用$view->preview('default', $args);它时,将结果转换为HTML。我知道我可以$view->result用来迭代原始结果,但是我用于某些字段的自定义渲染存在错误,并给了我WSOD(我不感兴趣或无法修复渲染器,这是一个极端的情况:))

我正在将Views 3与Drupal 7一起使用


也许$ view-> execute()可以帮助您。简单的例子:drupal.stackexchange.com/questions/9121/...
kalabro

Answers:



3

$ view-> preview()通常用于简单地查看显示,换句话说,它将通过指定的格式呈现它。

$ view-> execute_display()也以视图中指定的相关格式返回显示。

我认为您可能必须直接执行查询即db_query()


我想我只需要借助db_query自己构建查询即可。感谢您的帮助:)
丹尼尔(Daniel)

0

如果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(...)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.