小编cha*_*pka的帖子

如何在Drupal 8中以编程方式创建节点?

我正在Drupal 8中设计一个新模块.这是一个长期项目,至少几个月内不会上市,所以我用它来弄清楚什么是新的.

在这个模块中,我希望能够以编程方式创建节点.在Drupal 7中,我会通过创建对象,然后调用"node_submit"和"node_save"来完成此操作.

这些函数在Drupal 8中不再存在.相反,根据文档,"模块和脚本可以使用通常的表单API模式以编程方式提交节点." 我不知所措.这是什么意思?我已经使用Form API在Drupal 7中创建表单,但是我没有得到文档在这里说的内容.

我想要做的是基于不是直接从用户呈现的表单中获取的信息,以编程方式创建至少一个并且可能多个新节点.我需要能够:

1)指定内容类型

2)指定URL路径

3)设置以前已经过时的node_object_prepare()处理过的任何其他必要变量

4)提交新节点对象

我希望能够在一个独立的,高度抽象的函数中完成此操作,而不依赖于特定的块或形式.

那我错过了什么?

php drupal drupal-8

10
推荐指数
4
解决办法
2万
查看次数

使用PDO结果数据库时,返回值中的额外(双)数组字段

我正在使用PDO库从PHP脚本访问MySQL数据库,我之前没有使用过(我更熟悉MySQLi).我在结果中看到了额外的,意外的字段.它们并没有干扰我的代码,但我想知道它们来自哪里.

这是我的数据库调用:

SELECT 
    author.author_id AS author_id,
    author.name_last AS name_last,
    author.name_first AS name_first,
    author.detail AS detail     
FROM join_play_author
LEFT JOIN author
ON join_play_author.author_id = author.author_id
WHERE join_play_author.play_id = :play_id
ORDER BY author.name_last
Run Code Online (Sandbox Code Playgroud)

然后我成功绑定并执行,我的结果包含我所请求的所有字段,以及相应的标签.但是,每个字段在结果集中出现两次:一次使用我请求的标签,一次使用额外的自动递增值.例如,一个结果集(使用print_r()打印)如下所示:

Array 
(
    [author_id] => 41 
    [0] => 41 
    [name_last] => Dekker 
    [1] => Dekker 
    [name_first] => Thomas 
    [2] => Thomas 
    [detail] => 0 
    [3] => 0 
)
Run Code Online (Sandbox Code Playgroud)

这些双字段并没有主动干扰我的代码,但它们在调试期间很烦人,我担心它们会影响大型结果集的性能,这将是生产站点上的一个问题.

删除AS标记不会影响结果数组.

有任何想法吗?这只是PDO的一个功能 - 如果是这样,有什么方法可以关闭它吗?我不记得在MySQLi结果中看到这些额外的字段,尽管我可能错过了它们.

php mysql arrays pdo

2
推荐指数
1
解决办法
693
查看次数

标签 统计

php ×2

arrays ×1

drupal ×1

drupal-8 ×1

mysql ×1

pdo ×1