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

时间:2010-09-10 13:59:24

标签: validation drupal views arguments

我有一个视图设置接受2个参数。网址如下:播放列表/ video5 /%/%/ rss.xml 如果我提供了2个参数,如播放列表/ video5 / front / coach / rss.xml,它工作正常。 我有两个论点“分类:术语”

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

我正在使用它作为第一个:

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

我正在使用它作为第二个:

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

如果我输入1,2或没有参数,它在预览中工作正常,但如果我在网址中使用少于2个参数,则在浏览器中它会给我一个“找不到页面”错误

与这些网址有关: /playlists/video5/gridiron/all/rss.xml /playlists/video5/gridiron/football/rss.xml

它无效: 播放列表/ video5 /烤架/ rss.xml

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

感谢

2 个答案:

答案 0 :(得分:3)

我会重新排列您的网址,如下所示: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之类的东西,显示所有具有第一或第二项的值。

答案 1 :(得分:1)

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

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

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

对于第二个副本,请使用playlists/video5/rss.xml。此视图显示没有参数。如果您只想显示所有记录,则不必再执行任何操作。但是,如果要提供除所有记录之外的默认参数,则可以覆盖视图显示并创建过滤器而不是参数。


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