【问题标题】:drupal multiple view arguments with PHP code validation for empty argumentsdrupal 多视图参数与空参数的 PHP 代码验证
【发布时间】: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,就使用那个,等等...

谢谢

【问题讨论】:

    标签: validation drupal views arguments


    【解决方案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 文本框中没有放置任何内容预览。
    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多