Validation drupal多视图参数,带有空参数的PHP代码验证

Validation drupal多视图参数,带有空参数的PHP代码验证,validation,drupal,views,arguments,Validation,Drupal,Views,Arguments,我有一个接受2个参数的视图。url如下:playlists/video5/%/%/rss.xml 如果我为url提供两个参数,比如playlists/video5/front/coach/rss.xml,它就可以正常工作。 我有两个“分类法:术语”的论点 但我需要它运行,即使提供了1个或没有参数。看起来您可以在下面的PHP代码中执行此操作:提供默认参数选项->默认参数类型:->PHP代码 我用这个做第一个: $arg[0] == 'all'; return 'all'; 我用这个来做第二个:

我有一个接受2个参数的视图。url如下:playlists/video5/%/%/rss.xml 如果我为url提供两个参数,比如playlists/video5/front/coach/rss.xml,它就可以正常工作。 我有两个“分类法:术语”的论点

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

我用这个做第一个:

$arg[0] == 'all';
return 'all';
我用这个来做第二个:

$arg[1] == 'all';
return 'all';
如果我输入1、2或没有参数,它在预览中工作正常,但是在浏览器中,如果我在url中使用少于2个参数,它会给我一个“未找到页面”错误

它与以下URL一起工作: /播放列表/video5/gridiron/all/rss.xml /播放列表/video5/gridiron/football/rss.xml

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

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


谢谢

视图只会折叠
%
,而不会折叠周围的斜线。因此,当您尝试使用
播放列表/video5/rss.xml
时,视图需要
播放列表/video5///rss.xml

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

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

对于第二个副本,请使用播放列表/video5/rss.xml。此视图显示将没有参数。如果你只是想让所有的记录都显示出来,你就不需要做更多的事情了。但是,如果要提供除所有记录之外的默认参数,则需要覆盖视图显示,并创建一个过滤器而不是参数



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

视图只会折叠
%
,而不会折叠周围的斜线。因此,当您尝试使用
播放列表/video5/rss.xml
时,视图需要
播放列表/video5///rss.xml

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

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

对于第二个副本,请使用播放列表/video5/rss.xml。此视图显示将没有参数。如果你只是想让所有的记录都显示出来,你就不需要做更多的事情了。但是,如果要提供除所有记录之外的默认参数,则需要覆盖视图显示,并创建一个过滤器而不是参数



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

我会重新排列您的URL,使其如下所示:
播放列表/video5/rss/%/%
,这样您的参数总是排在最后。然后在参数设置集中:

参数不存在时要采取的操作:显示所有值

这样,当您转到
播放列表/video5/rss
时,您将获得所有值。当您转到
/playlists/video5/rss/term1
时,您将获得包含
term1
的所有值。第二个参数的诀窍是在第一个参数中包含通配符,如下所示:
/playlists/video5/rss/all/term2
。我相信这将只包括具有第二个术语的值


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

我将重新排列您的URL,使其如下所示:
playlists/video5/rss/%/%
,这样您的参数总是排在最后。然后在参数设置集中:

参数不存在时要采取的操作:显示所有值

这样,当您转到
播放列表/video5/rss
时,您将获得所有值。当您转到
/playlists/video5/rss/term1
时,您将获得包含
term1
的所有值。第二个参数的诀窍是在第一个参数中包含通配符,如下所示:
/playlists/video5/rss/all/term2
。我相信这将只包括具有第二个术语的值


或者,如果这两个术语都是分类术语,您可能希望将它们合并到一个参数中,并选中这样的框:
允许每个参数使用多个术语。
根据复选框正下方的文档,它看起来应该允许您使用类似于
播放列表/video5/rss/term1+term2
的内容,并显示所有具有第一个或第二个术语的值。

谢谢。我想没有办法在空变量中填充“all”,因为空变量存在吗?这正是我想要的,因为我想我的一些编辑可能不记得他们需要填写5个变量,我以后可能需要将其更改为更多。谢谢。我想没有办法在空变量中填写“全部”,因为空变量存在吗?这正是我想要的,因为我的一些编辑可能不记得他们需要填写5个变量,我可能需要在以后更改为更多。谢谢Mark。我不明白的是,它要求您在“Action to take if”参数中提供一个默认值