警告:count():参数必须是在invTranslate_translated_menu_link_alter()(来自\ sites \ all \ modules \ custom \ invTranslate \ invTranslate.module的第55行)中实现Countable的数组或对象。
invTranslate.module是一个自定义模块。
function invTranslate_translated_menu_link_alter(&$item) {
static $nodeMenu;
if ($nodeMenu === NULL) {
if (arg(0) == 'node' && count(arg() == 3 && (arg(1) == 'add' || arg(2) == 'edit'))) {
$nodeMenu = true;
...
第55行是:
if (arg(0) == 'node' && count(arg() == 3 && (arg(1) == 'add' || arg(2) == 'edit'))) {
。
请帮忙。
答案 0 :(得分:1)
对我来说,似乎有一个简单的错字,但这取决于您的代码应该做什么。我将代码分成多行以提高可读性:
if (
arg(0) == 'node'
&& count(arg() == 3 //the count method takes as param the bool from the row below too
&& (arg(1) == 'add' || arg(2) == 'edit'))
) {
它应该看起来像这样:
if (
arg(0) == 'node'
&& count(arg()) == 3 // add right bracket after arg()
&& (arg(1) == 'add' || arg(2) == 'edit') // remove right bracket from here
) {
答案 1 :(得分:1)
arg()返回当前Drupal路径的组成部分。 例如,当在路径“ admin / structure / types”上查看页面时,arg(0)返回“ admin”,arg(1)返回“ structure”,而arg(2)返回“ types”。 https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/arg/7.x
在durpal中,节点的路径是这样的
回顾一下代码:
if (arg(0) == 'node' && count(arg() == 3 && (arg(1) == 'add' || arg(2) == 'edit')))
我认为,该条件仅适用于我提到的路径的前2条。因此,将代码更改为以下内容应会导致预期的行为:
if (arg(0) == 'node' && count(arg()) == 3 && (arg(1) == 'add' || arg(2) == 'edit'))
count()仅应检查路径中是否有足够的组件。