drupal 多视图参数与空参数的 PHP 代码验证

Posted

技术标签:

【中文标题】drupal 多视图参数与空参数的 PHP 代码验证【英文标题】:drupal multiple view arguments with PHP code validation for empty arguments 【发布时间】:2010-09-10 13:59:23 【问题描述】:

我有一个视图设置为接受 2 个参数。网址是这样的:playlists/video5/%/%/rss.xml 如果我为 url 提供 2 个参数,例如 playlists/video5/front/coach/rss.xml,它工作正常。 我有 2 个“分类:术语”的论点

但即使提供了 1 个或不提供参数,我也需要它运行。看起来您可以在以下位置使用 php 代码执行此操作:提供默认参数选项 -> 默认参数类型:-> PHP 代码。

我用这个做第一个:

$arg[0] == 'all';
return 'all';

我用这个做第二个:

$arg[1] == 'all';
return 'all';

如果我输入 1、2 或不输入参数,它在 preview 中工作正常,但在浏览器中,如果我在 url 中使用少于 2 个参数,它会给我一个“找不到页面”错误.

可以使用这些网址: /播放列表/video5/gridiron/all/rss.xml /playlists/video5/gridiron/football/rss.xml

它不适用于此: 播放列表/video5/gridiron/rss.xml

我希望它在没有给出参数时返回所有值,或者如果只给出一个 arg,就使用那个,等等...

谢谢

【问题讨论】:

【参考方案1】:

我会重新排列您的网址,使其看起来像这样:playlists/video5/rss/%/%,这样您的论点总是排在最后。然后在您的参数设置中:

参数不存在时采取的措施:显示所有值

这样,当您转到playlists/video5/rss 时,您将获得所有值。当您转到/playlists/video5/rss/term1 时,您将获得所有包含term1 的值。然后第二个参数的技巧是为第一个参数包含通配符,如下所示:/playlists/video5/rss/all/term2。我相信这将仅包括具有第二项的值。

或者,如果这两个都是分类术语,您可能希望将它们合并到一个参数中并选中显示以下内容的框:Allow multiple terms per argument. 根据复选框下方的文档,看起来这应该允许您类似playlists/video5/rss/term1+term2 并显示所有具有第一项或第二项的值。

【讨论】:

谢谢。我想没有办法用“all”为空的变量填充空变量吗?这正是我想要的,因为我的一些编辑可能不记得他们需要填写 5 个变量,我以后可能需要将其更改为更多。【参考方案2】:

视图只会折叠%,而不是围绕它的斜线。因此,当您尝试使用 playlists/video5/rss.xml 时,Views 期待使用 playlists/video5///rss.xml

要获得您要查找的内容,您需要复制您正在使用的视图显示两次。

对于第一个副本,使用playlists/video5/%/rss.xml 作为路径。在此视图显示的参数中,确保第一个参数验证 gridironfootball

对于第二个副本,使用playlists/video5/rss.xml。此视图显示将没有参数。如果您只想显示所有记录,则无需再做任何事情。但是,如果您想提供除所有记录之外的默认参数,您将覆盖视图显示并创建过滤器而不是参数。


另一个(不太理想的)选项是将gridiron/football 视为一个参数并以这种方式对其进行验证。

【讨论】:

谢谢马克。我不明白的是,它要求您在“如果参数不存在时采取的操作:”->“提供默认参数”中提供默认值,对于“固定条目”,我输入“全部”。并且在视图预览中它可以工作。在“实时预览”中,它显示为路径:“playlist-xml-video/all/all/all/all/all”向我展示了填充缺失值的内容,因为我在 Arguments 文本框中没有放置任何内容预览。

以上是关于drupal 多视图参数与空参数的 PHP 代码验证的主要内容,如果未能解决你的问题,请参考以下文章

访问同一视图页眉或页脚部分中的 Drupal 视图参数。

使用ajax将参数发送到drupal视图

Drupal 视图 2 路径

Drupal 6 视图 2:设置日期参数

drupal-6视图参数中的日期范围?

Drupal 视图 - 使用 CCK、NodeReference 和参数将 1 个节点与 N 个其他节点相关联