视图:未查询具有关系的自定义表 -- 7 领域 和 views 领域 drupal 相关 的问题

Views : custom table with relationship is not queried


4
vote

问题

中文

我使用自定义表来存储我的节点上的数据,并挂钩 _views_data 以显示或排序从此表。

一切都很好:

  /** * Implements hook_views_data() */ function MYMODULE_views_data() {    $data['MYTABLE']['table']['join'] = array(     'node' => array(       'left_field' => 'nid',       'field' => 'nid',     )   );   $data['MYTABLE']['MYFIELD'] = array(     'field' => array(       'handler' => 'MYHANDLER',     )   ); }  class MYCLASS extends views_handler_field {   function query() {     // Add 2 columns I need to the query     $this->view->query->add_field('MYTABLE', 'COLUMN1', 'ALIAS1');     $this->view->query->add_field('MYTABLE', 'COLUMN2', 'ALIAS2');   }  function render($values) {     // WORKS FINE WITH NO RELATIONSHIP     $dates = array($values->ALIAS1, $values->ALIAS2);     ...     return ..   } }   

我的问题是:当在节点关系关系上调用我的表时,我无法获取值。

我尝试了

  function query() {         if(isset($this->relationship) && !empty($this->relationship)) {             $table = $this->view->relationship[$this->options['relationship']]->table_alias;             $field = $this->view->relationship[$this->options['relationship']]->real_field;             $this->view->query->add_field($table . '.' . $field, 'COLUMN1', 'ALIAS1');             $this->view->query->add_field($table . '.' . $field, 'COLUMN2', 'ALIAS2');         } }   

  function query() { if (!empty($this->relationship)) {             $this->table = $this->query->ensure_table($this->table, $this->relationship);         }   

但在 .go-txt-head{ position: absolute; top: 200px; text-align: center; width:50%; font: 36px 'Lato'; } .go-txt{ position: absolute; top: 250px; text-align: center; width: 40%; font: 18px 'Lato'; padding-left: 5%; } .go-list{ position: absolute; top: 425px; width: 25%; font: 16px 'Lato'; padding-left: 15%; } 0 中,我的 .go-txt-head{ position: absolute; top: 200px; text-align: center; width:50%; font: 36px 'Lato'; } .go-txt{ position: absolute; top: 250px; text-align: center; width: 40%; font: 18px 'Lato'; padding-left: 5%; } .go-list{ position: absolute; top: 425px; width: 25%; font: 16px 'Lato'; padding-left: 15%; } 1 设置时始终为空。

英文原文

I use a custom table to store data on my nodes, and hook on _views_data to display or sort from this table.

Everything's going fine :

/** * Implements hook_views_data() */ function MYMODULE_views_data() {    $data['MYTABLE']['table']['join'] = array(     'node' => array(       'left_field' => 'nid',       'field' => 'nid',     )   );   $data['MYTABLE']['MYFIELD'] = array(     'field' => array(       'handler' => 'MYHANDLER',     )   ); }  class MYCLASS extends views_handler_field {   function query() {     // Add 2 columns I need to the query     $this->view->query->add_field('MYTABLE', 'COLUMN1', 'ALIAS1');     $this->view->query->add_field('MYTABLE', 'COLUMN2', 'ALIAS2');   }  function render($values) {     // WORKS FINE WITH NO RELATIONSHIP     $dates = array($values->ALIAS1, $values->ALIAS2);     ...     return ..   } } 

My problem is : I can't get values when my table is called on a node-relationship relationship.

I tried

function query() {         if(isset($this->relationship) && !empty($this->relationship)) {             $table = $this->view->relationship[$this->options['relationship']]->table_alias;             $field = $this->view->relationship[$this->options['relationship']]->real_field;             $this->view->query->add_field($table . '.' . $field, 'COLUMN1', 'ALIAS1');             $this->view->query->add_field($table . '.' . $field, 'COLUMN2', 'ALIAS2');         } } 

and

function query() { if (!empty($this->relationship)) {             $this->table = $this->query->ensure_table($this->table, $this->relationship);         } 

but in render, my $values is always empty when the relationship is set.

     

回答列表

4
 
vote
vote
最佳答案
 

而不是手动添加字段,您应该填充实例变量 additional_fields 。来自视图文档:

附加字段:一个字段数组,应以某种用途添加到查询。该数组的形式为: array('identifier' => array('table' => tablename, 'field' => fieldname);

通过一些实现看,表示您的代码应该看起来像这样:

  class MYCLASS extends views_handler_field {   function construct() {     parent::construct();      $this->additional_fields['ALIAS1'] = array(       'field' => 'COLUMN1',       'table' => 'MYTABLE',     );     $this->additional_fields['ALIAS2'] = array(       'field' => 'COLUMN2',       'table' => 'MYTABLE',     );   }    function query() {     $this->ensure_my_table();     $this->add_additional_fields();   }    function render($values) {     $alias1 = $this->get_value($values, 'ALIAS1');     $alias2 = $this->get_value($values, 'ALIAS2');     ...   } }   
 

Instead of adding the fields manually, you should populate the instance variable additional_fields. From the views documentation:

additional fields: An array of fields that should be added to the query for some purpose. The array is in the form of: array('identifier' => array('table' => tablename, 'field' => fieldname);

Looking through some of the implementations out there indicates that your code should look something like this:

class MYCLASS extends views_handler_field {   function construct() {     parent::construct();      $this->additional_fields['ALIAS1'] = array(       'field' => 'COLUMN1',       'table' => 'MYTABLE',     );     $this->additional_fields['ALIAS2'] = array(       'field' => 'COLUMN2',       'table' => 'MYTABLE',     );   }    function query() {     $this->ensure_my_table();     $this->add_additional_fields();   }    function render($values) {     $alias1 = $this->get_value($values, 'ALIAS1');     $alias2 = $this->get_value($values, 'ALIAS2');     ...   } } 
 
 
 
 

相关问题

3  设置私有文件目录(nginx)  ( Setting up the private file directory nginx ) 
问题 我正在尝试在LEMP堆栈上为Drupal设置私人文件目录(Ubuntu 12.04,Nginx,MySQL,PHP),我不是100%确定权限或设置,所以我以为我'D问,你应该怎么做? 到目前为止 需要是网络服务器可写的文件夹,但无法从Web访问。 示例: 位置:drupal_root / private...

1  如何在以编程方式在Drupal Commerce中保存订单后立即启用付款方式?  ( How to enable a payment method as soon as an order is saved in drupal commerce p ) 
我正在尝试使用Drupal Commerce创建会员网站。我创建了一种自定义表单,可以收集用户的所有帐单详细信息和成员身份类型,然后在提交创建并保存Drupal Commerce Order(已创建的产品)。 现在我想在节省订单时激活订单的支付系统,但我没有能够这样做。所有这些都应该在后端发生,我不想将用户重定向到...

0  视图#3自定义处理程序错误  ( Views3 custom handler error ) 
我正在学习如何实现客户的观点3字段处理程序。 使用以下处理程序代码: class views_handler_filter_sub_nodes extends views_handler_field_custom{ function options_form(&$form, &$form_state){...

1  WebForm上传字段模板  ( Webform upload field template ) 
for drupal的file_managed窗口小部件我创建了自己的" theme_file_widget " 功能。 我需要为webform的文件窗口小部件做同样的事情,但我不知道要使用什么主题挂钩。任何想法? ...

0  如何从$ form_state ['值']恢复表单值?  ( How to restore form values from form statevalues ) 
我在数据库中保存 $form_sate['values'] 。当我的用户返回到我想要之前所提出的值的表格。类似: function my_form($form, &$form_sate) { $form_state_saved = get_form_state_values_from_db(); $fo...

2  在第一级显示父母,然后在每个页面中的孩子[关闭]  ( Show parents at first level then child in each page ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并阐明编辑此帖的问题。 关闭 1年前。 ...

2  Drupal Commerce:全面设置订单  ( Drupal commerce set order as paid in full ) 
我正在尝试从CSV文件(来自另一个非Drupal数据库)导入记录,以便我移植到Drupal 7.我有Drupal Commerce,Commerce经常性框架设置。当你经历适当的工作流程时,一切都应该起作用。但是,我有2000多个需要添加到网站并通过该过程的记录并没有意义。换句话说,我正在编写一个脚本来设置订单,然后...

0  查询将大数字视为字符串  ( Query treating large number as a string ) 
我正在尝试在表上运行一个选择语句。 该列是十进制(20,0)无符号。 可以使用SELECT语句找到大部分条目: db_query('SELECT * FROM {foo_table} WHERE foo_id = :other_id',array(':other_id' => $value)) 和$ val...

1  Drupal 7 Commerce - 当您选择一个属性时,如何样式请等待加载消息/图标?  ( Drupal 7 commerce how do you style the please wait loading message icon when y ) 
我正在尝试在Drupal 7 Commerce中选择产品的属性时,请等待加载程序图标。我正在使用chrome,我无法弄清楚右键单击inspect元素的方式,因为它加载到快速。还是有另一种方式来暴露这一点?我只需要与它关联的HTML和类。 ...

1  设置订单已完成  ( Setting an order as completed ) 
在代码中,我尝试标记为已完成的订单。我在 hook_commerce_payment_order_paid_in_full 中这样做 function my_module_commerce_payment_order_paid_in_full($transaction) { $orderid = $tran...

2  我的菜单只会半翻译  ( My menu will only semi translate ) 
我在我的网站上创建了一个菜单,并使用了使用功能来导出它。前2个菜单项转换为不同的语言,但第三项不是。 第三个单词是联系人。我已经去了 99887664 并搜索联系人。我得到了以下内容。 在我的特征底部,它有 // Translatables // Included for use with stri...

5  jQuery.cookie.js仅用于jQuery更新模块的经过身份验证的用户  ( Jquery cookie js is loaded only for authenticated users by jquery update module ) 
jquery.cookie.js仅为经过身份验证的用户加载,我无法真正弄清楚为什么。 页面缓存已禁用。 任何想法? ...

0  订购用户使用中使用  ( Ordering users for use in view ) 
我有一个显示每个用户的数据的视图。现在我希望能够订购用户。 一个解决方案是将一个名为 99887661 的新字段添加一个新的字段到用户内容类型,然后使用此字段对视图进行排序,但最好是通过拖放来执行此操作来自 admin/people 配置页面。 我安装了权重模块,但似乎支持为用户设置权重。 是否有一个可以执行此操作的...

2  删除内容类型现在无法删除或编辑该类型的节点,但它在网站上可见  ( Deleted the content type now cannot delete or edit node of that type but it is ) 
我有一个我可以在我的网站上看到的节点,但是当我尝试编辑它时,我收到错误: Notice: Undefined index: my_node_name_node_form in drupal_retrieve_form() (line 763 of /home/sites/my-site-url/includes/...

0  Drupal PHP视图 - 如何引用嵌套Braket阵列变量? [关闭]  ( Drupal php views how to reference nested braket array variables ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

7  如何设置活动注册和PayPal付款?  ( How to setup event registration and paypal payment ) 
我们有活动,我们为他们注册。 实体注册模块是为此目的而安装的,它的工作很大。现在,由于这些事件是付费事件,我们也希望实现 PayPal付款方法。 问题是我们需要 combine 注册过程和paypal付款到一个过程中。也就是说,用户应该点击按钮寄存器&支付,应该做2件事: 注册用户的事件(这已作为模块)...

0  登录后如何将用户发送到结算信息页面?  ( How to send user to the billing information page immediately after logging in ) 
我正在使用Drupal Commerce创建订阅站点。我的网站在创建帐户后使用LogintoBoggan登录用户。我计划以编程方式创建订单,然后将用户重定向到可以输入信用卡信息和计费信息的页面。我还没有想出如何将它们重定向到该页面。任何帮助,将不胜感激。 ...

-3  Drupal 7 DPM一个对象,但不确定如何渲染递归变量?  ( Drupal 7 dpm an object but not sure how to render a recursion variable ) 
在Drupal 7视图PHP。我正在尝试呈现和字符串替换内容:path字段使用全局php视图字段。我拥有的问题是我不确定如何引用内容:Path字段为$行 - > path显示空值。我可以看到内容:$ View对象中存在path变量,但它显示递归。当我进行打印时,如何将递归值渲染递归值? ...

0  在区域设置中找不到“语言”  ( Languages is not found in regional settings ) 
我安装了drupal commons 7.3.4, 我想添加额外的语言。我试着遵循本手册: https://docs.acquia。 COM /文章/添加 - 另一种语言 - 您的drupal-7-site#language go to Configuration > Regional and langu...

1  仅显示某些幻灯片仅在幻灯片上的特定URL上  ( Show certain slides only on specific urls on views slideshow ) 
使用视图幻灯片,我希望能够控制内容类型"幻灯片" 节目的节点,具体取决于什么网址,任何想法?例如,在页面前面,我想在节点/ 43上显示Slide1和Slide2,我想显示Slide3和Slide4。 具有单独的视图不是一个选项,因为这是一款位于数百页和不同内容类型的滑块。 ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.