Pods: 实际问题:不应允许添加保留名称

创建于 2019-07-13  ·  20评论  ·  资料来源: pods-framework/pods

描述错误
第一次使用 Pod。 遇到这种情况(使用 master 复制): classes/PodsAPI::save_pod在保存新添加的字段时遇到任何错误时,会在调用cache_flush_pods之前退出。 虽然其他字段似乎仍保存到数据库中,但在刷新缓存之前,它们对最终用户不可见。

当前修订行号2356

if ( ! empty( $errors ) ) {
    return pods_error( $errors, $this );
}

$this->cache_flush_pods( $pod );

(PS据我所知,似乎没有任何错误处理未能保存字段。)

再现
重现行为的步骤:

  1. 编辑 Pod
  2. 添加名为“foobar”的字段
  3. 添加名为“name”(或“post_title”,或现有字段的名称)的字段
  4. 保存豆荚

观察:保存后没有显示新添加的字段

Reproduced Bug Documentation

所有20条评论

Issue-Label Bot 自动将标签Type: Bug应用于此问题,置信度为 0.98。 请用 :thumbsup: 或 :thumbsdown: 标记此评论以提供我们的机器人反馈!

链接:应用主页仪表板和此机器人的代码

+1 有同样的问题。 设置保留名称不会出错。

请参阅#4122 这应该应用于字段名称、分类法、帖子类型等。有人不应该能够键入保留名称字段列表中的任何字段名称、帖子类型或分类法。

我提交了一个错误报告 #5440,其中我在标记为“状态”的字段中遇到了同样的问题。 但是,“状态”不在 Wordpress 的保留条款列表中。 从上面提到的案例中,'name' 在该列表中,但 'foobar' 不在该列表中。 PHP 保留字列表也是如此。

Wordpress 列表: (https://codex.wordpress.org/Reserved_Terms)
PHP 列表https://www.php.net/manual/en/reserved.php

也许其他一些保留字列表也有干扰?

@raoulunger您是否尝试过有关保留关键字的最新 PR?

编辑: status不是 WordPress 保留关键字,但它用于 Pod,因为它用作 Pod 对象字段之一。 (目前还在调查中)

嗨,我看到你把问题划掉了;-)。 感谢调查!

是的,经过调查发现status是 Pod 中post_status的别名(用于魔术标签等)。
默认键和别名的完整列表:

ID                     ==> id
post_title             ==> title & name
post_content           ==> content
post_excerpt           ==> excerpt
post_author            ==> author
post_date              ==> created & date
post_date_gmt
post_status            ==> status
comment_status
ping_status
post_password
post_name              ==> slug &  permalink
to_ping
pinged
post_modified          ==> modified
post_modified_gmt
post_content_filtered
post_parent            ==> parent
guid
menu_order
post_type              ==> type
post_mime_type
comment_count
comments

@sc0ttkclark @jimtrue我认为这个问题可以关闭,同意吗?

好的,就“状态”而言,这澄清了问题 - 感谢您解决这个问题,并提供列表!

为了解决使用保留字的更广泛问题(本主题以及#4122),似乎有几个选项:

  • 代码已更改,以便实际上可以使用 id 的别名,或者(如果这不可行),
  • 使用“禁止”字样时会显示警告,并且
  • 在文档中的某处提到了这种现象和上面的禁止词列表。

顺便说一句,我当然很容易提出所有这些建议,因为我在这里真的帮不上忙——我的编码技能太有限了,抱歉!

干杯!

ID 只是一个保留关键字,我认为我们无法更改它。
关于警告,目前已显示,但这是通过 AJAX(服务器端)完成的,而不是直接在输入时完成。 我认为这是我们将来会添加的内容,但不会作为维护版本添加。
文档总是一个好主意。 @jimtrue你能为此创建一个我可以使用的文档页面吗?

在记录之前无法关闭。 任何其他“别名”都不适用于作为字段创建? 即“标题”“父母”等?

到目前为止我能找到的就是这些(除了已经提到的 WP 核心关键字)

这仍然需要修补,因为我们必须解释为什么我们不允许添加这些字段。 现在,我们没有给他们任何信息。

这并不完全正确,AJAX 会返回一条错误消息,但仅在保存时才会返回。

当我复制问题时,我没有收到任何可见的错误。 如果没有对用户可见的错误,那就是一个问题。

你用最新的 PR 测试过吗? 第5441章
请记住,字段名称允许使用这些保留关键字。 仅不适用于 Pod(CPT/税),请参阅 #5428。

我也没有收到错误消息(因此混淆)。 不过,我还没有用最新的 PR 进行测试,因为我真的不知道该怎么做(再次抱歉 - 我是这里的新手)。

2019 年 8 月 19 日 17:50,Jory Hogeveen [email protected]写道:

你用最新的 PR 测试过吗? #5443 https://github.com/pods-framework/pods/pull/5443
请记住,字段名称允许使用这些保留关键字。 仅适用于 Pod(CPT/税),请参阅 #5428 https://github.com/pods-framework/pods/pull/5428


你收到这个是因为你被提到了。
回复此电子邮件直接,查看它在GitHub上https://github.com/pods-framework/pods/issues/5420?email_source=notifications&email_token=AM2NSKDD43ZU2JY47LPKRV3QFK6LTA5CNFSM4ICZDB72YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4TNDNQ#issuecomment-522637750 ,或静音线程https://github.com/通知/取消订阅身份验证/AM2NSKESXEIVUY3PLHRRMW3QFK6LTANCNFSM4ICZDB7Q

@sc0ttkclark @jimtrue这可以关闭吗?

如果我们在发送 pods_error 之前移动缓存刷新,我们可以解决这个工单的主要焦点。

已修复 #5459

此页面是否有帮助?
0 / 5 - 0 等级