以编程方式验证节点对象的必填字段 -- 6 领域 和 forms 领域 drupal 相关 的问题

Programmatically validate required fields of node object


1
vote

问题

中文

我想知道节点对象是否可以传递表单提交。 使用UI,如果缺少必填字段,则无法保存节点。

我想加载节点对象,并检查是否设置了所有必填字段。有没有简单的方法检查?

英文原文

I want to know if a node object could pass the form submit. With the UI, if required fields are missing, you can't save the node.

I would like to load the node object programmaticly, and check if all required fields are set. Is there a easy way to check that ?

     

回答列表

2
 
vote

传递表单提交意味着传递表单的验证处理程序。一旦通过验证,节点就会被写入数据库,并且将无法完成验证(不确定此)。这就是为什么 node_save API函数没有返回任何东西。

意味着仅在表单验证器中验证"必需" 字段。但是,您可以选择在没有填写的"必需" 字段的情况下选择甚至编写一个节点。例如,可以选择在hook_presave(d7)中空的"必需" 字段。

node_load不会检查是否设置了所有字段。它只是创建一个一致的节点对象,也可以调用各种钩子。如果我们编写自己的函数来读取数据库并构建节点对象,它会将我们从可移植性问题中保存。

 

Passing form submit means passing the form's validate handlers. Once validation is passed, the node is written into database and no more validation will be done(not sure about this). That's why node_save api function does not return anything.

It means that "Required" fields are to be validated only in the Form validator. You can however choose to even write a Node without "Required" fields filled in. For example to can choose to empty "Required" fields in hook_presave(D7).

node_load does not check if all fields are set or not. It simply creates a node object which is consistent and also calls various hooks. It saves us from portability issues if we were to write our own functions to read the database and build node object.

 
 
   
   

相关问题

4  什么会使某种类型的所有内容返回节点页面上的404?  ( What would make all content of a certain type return a 404 on the node page ) 
在尝试查看/编辑内容类型x的节点时,Drupal返回404 - 未找到。站点上的所有其他内容(其他节点类型的内容)似乎不受影响。 要消除清洁网址,路径或路径自动的其他问题,我正在使用 q param来访问节点( 99887661 , example.com?q=node/123/edit ),所以它不是那样的愚蠢...

3  Drupal较少的缓存保留生成确实允许访问Apache服务器的缓存文件  ( Drupal less cache keeps generating cache file that does allow access to the apac ) 
如何确保正在生成自动生成的CSS缓存文件(与服务器访问所需的权限生成生成的CSS缓存文件(与较少的模块)生成。 目前,每当我清除所有缓存(带 drush cc all )时,我都会丢失所有网站的CSS样式并获得以下错误: 少无法在站点/默认/文件/少于/ 52741f7e343834.56376384 / sit...

2  Drupal 6 Ubercart自定义购物车页  ( Drupal 6 ubercart customise cart page ) 
我想在我的主题中对Ubercart购物车页进行小修改。 购物车页上的典型项目行看起来像这个 [remove button] [product image] [product title] [quantity field] [row total] 我想做的就是在 [quantity field] 后移动 [re...

0  node_load不起作用  ( Node load is not working ) 
我正在创建一个导入脚本,该脚本是从外部数据库导入Drupal网站的节点。 节点正常插入。我已经添加了节点存在于drupal网站的条件,并且我正在通过这种情况获得正确的nid。 当我使用 node_load 加载现有节点时,它显示为空结果。 我也检查了 node_load get空白,但没有得到任何满意的答案。 如...

1  基于以前的字段的配置文件表单上的自动填充字段  ( Autofill fields on profile form based on previous fields ) 
我在客户网站上有一个特别长的用户配置文件表单。其中一些字段可以使用已输入的信息(例如配偶姓氏)自动填充。填充物需要在页面上动态地进行。我该怎么办? [编辑] 为我经历的问题添加代码(匿名): function foo_profile_autofill_form_profile_node_form_alter (...

3  为什么通过drupal_set_header()将标题设置为text / html?  ( Why does a header set via drupal set header revert to text html ) 
我在drupal 6中使用 views_rss 模块。每当我使用此插件构建视图时,以下标题将在 template_preprocess 功能中发送: drupal_set_header('Content-Type: application/rss+xml; charset=utf-8'); 似乎被忽略,因为...

1  吹嘘 - / usr / bin / drush:线129:/ usr / bin / php:成功  ( Drush usr bin drush line 129 usr bin php success ) 
当我运行任何Drush命令时,我得到了这一行: /usr/bin/drush: line 129: /usr/bin/php: Success 例如: [root@061889 ~]# drush /usr/bin/drush: line 129: /usr/bin/php: Success [root...

1  在某些时间段之后将邮件发送给注册用户[已关闭]  ( Send out mails to registered users after certain time period ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

0  如何在呈现期间编程方式重复节点参考字段?  ( How to programmatically duplicate a node reference field during rendering ) 
我正在使用一个节点类型,其中包含对其他类型的节点引用。我想根据节点呈现期间基于一组条件编程方式重复一些节点参考字段。我无法弄清楚。 ...

0  禁用节点的显示摘要在D6中全视图  ( Disable nodes show summary in full view in d6 ) 
在 https://drupal.org/node/514318 它谈论如何禁用显示完整视图模式下的摘要/预告片,但仅适用于D7。 在我的D6基地中,我在Nodewords模块的需要时填写了节点预告片中的Meta描述。 问题是,在完整的视图模式下,它是使用节点的正文文本的此节点预告片。是否有任何选择避免它添加身体内容...

3  为什么这段代码没有发送给Drupal_email()的电子邮件?  ( Why this code doesnt send an email with drupal email ) 
我正在开发一个Drupal 6模块,应该在提交表单后发送电子邮件。到目前为止,我写了以下代码。 function mailform_mail($key, &$message, $params) { $headers = array( 'MIME-Version' => '1.0', 'Cont...

0  安装自定义模块时创建表  ( Create table while installing my custom module ) 
我的自定义模块名称是"person" ,它的.install文件有以下代码。 <?php /** * Implementation of hook_install(). */ function person_install() { drupal_install_schema('person'); } ...

1  撤消使用管理面板进行的内容更改  ( Undoing content changes made with admin panel ) 
我管理现有网站,并意外地改变了我们的主页上的一些格式。在过去,我已经能够在我的浏览器上按"返回" 以撤消更改,但由于某种原因,这次不起作用。有谁知道我可以在管理面板下的网站上"撤消" 更改的方式? ...

1  如何?使用CCK文本字段存储的部分字符串,最终用户在公开过滤器中输入视图中的完整字符串  ( How to partial string stored with cck text field end users enter the full stri ) 
我可以用一些指针真的做... 我的场景如下。我有一个被称为部分的CCK内容类型。它具有一个名为机箱的字段,设置为接受无限值。 每个部分将适合所有车辆,其中部分机箱在节点上输入的部分匹配,以某种方式到客户车的全机箱。我在某种程度上说,因为对供应商说说有没有说"储存的机箱将匹配完整底盘的前8个" ,他们说它可以随机....

2  如何更改Ubercart订单模板?  ( How can i change the ubercart order templates ) 
我一直在寻找我问题的答案,打开和关闭几个月。我正在使用drupal 6, ubercart 和 ubercart marketplace 。我正在尝试将卖家地址添加到包装单上作为返回地址。如果没有收到我的地址,就可以真正的事情。 我对如何提出这个信息的充满信心。类似的东西: <?php $seller = ar...

0  在Drupal 6中的菜单缓存问题  ( Issue with menu caching in drupal 6 ) 
我已经实现了 hook_menu_link_alter ,以便为某些经过身份验证的用户更改菜单链接,但不适用于所有。我的实现 hook_menu_link_alter 更改链接(HTML属性)的属性,而不是链接的目标。我更改的是,为某些用户添加HTML类和其他属性,而不是其他用户。一个第三方JavaScript,也加...

0  在节点编辑上隐藏可折叠的字段集  ( Hide collapsible fieldsets on node edit ) 
我了解如何使用form_alter 编辑特定的内容类型 function user_can_access_experiment() { } 4 我想隐藏除调度之外的所有可折叠字段集。我如何仅针对这些其他Firditset来隐藏? http://screencast.com/t/ozhu5espgc ...

0  是否可以通过路径加快_form_alter?  ( Is it possible to hook form alter by path ) 
我有一个基本的 hook_form_alter 工作,但问题是我不能通过形式ID来完成它,因为ID在各种环境中可能不同,即本地,开发,生产。因此,通过定位形式ID改变通常的方法并不理想。 我认为我可以通过路径(因为它不会改变)但没有通常的方法工作。我想在代码中保持这个,这就是为什么我不仅仅是改变这个设置的UI。 这...

0  迁移从6到7更新的网站  ( Migrating a site thats been updated from 6 to 7 ) 
我在服务器上有一个drupal 6站点,我用备份&amp做了一个本地副本;迁移。我现在在localhost上升级了这个网站到drupal 7。当我尝试将此移动到服务器时(或者,如我所发现的那样,在localhost上的D7的新安装)我在运行update.php 时获得以下错误 错误消息 注意:date_defau...

1  在Drupal 6站点上禁用所有通知错误[重复]  ( Disable all notice errors on a drupal 6 site ) 
这个问题已经在这里有答案: 如何沉默php错误? (7个答案) 关闭 5年...




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


Licensed under cc by-sa 3.0 with attribution required.