it-swarm-eu.dev

Proč má zpětné volání stránky dva argumenty?

function menufun_menu() {
  $items['menufun/%/bar/baz'] = array(
    'title' => 'Hi',
    'page callback' => 'menufun_hello',
    'page arguments' => array(1), // The matched wildcard.
    'access callback' => TRUE,
  );

  return $items;
}

/**
* Page callback.
*/
function menufun_hello($a = NULL, $b = NULL) {
  return t('Hello. $a is @a and $b is @b', array('@a' => $a, '@b' => $b));
}

Ve funkci menufun_menu() je argument stránky pro zpětné volání menufun_hello Pouze jeden. Proč menufun_hello() má dva parametry?

5
enjoylife

Zpětná volání nabídky jsou předávána nejprve argumenty definované v page arguments pak převyšuje argumenty z adresy URL.

Ve výše uvedeném příkladu:

menufun/1/bar/baz

Poskytne tyto vars:

$a = 1;
$b = NULL;

Pokud však v adrese URL zadáte další argument:

menufun/1/bar/baz/2

Převedete jej do zpětného volání nabídky:

$a = 1;
$b = 2;

Další výhodou je, že časovač píše, že umožňuje opakované použití stejného kódu pro různé případy, čímž je modul lépe udržovatelný.

7
googletorp

V tomto případě menufun_hello() trvá až dva argumenty, ale jen nula, protože poskytuje výchozí hodnoty. To znamená, že menufun_menu() mohl později předat další argument a podpis funkce by se nemusel měnit.

1
tim.plunkett