CakePHP:将所有变量从另一个元素内发送到一个元素

CakePHP: Send all variables to an element from within another element

假设我有一个非常复杂的应用程序。我有一个调用 characters.ctp 的控制器。所有 "characters".

的数据库工作都在这里完成

characters.ctp 中,我调用 monsters 元素。它打印出一个怪物并为我提供了从数据库中检索到的怪物的相关信息。现在在 monsters 元素中,我想为 invertebrates 创建另一个元素,因为它们非常复杂,需要大量新的视图元素和 CSS.

invertebrates 不携带它通过 $this->set() 从控制器继承的 monster 变量的范围。如何将所有变量发送到元素的子元素?我正在使用蛋糕 2.8.4.

在元素中使用 set() 方法

characters 控制器中完成所有数据库工作后,您应该在 monster 中执行一些控制器工作,方法是使用 [=18= 重新设置 monster 携带的变量] :

# /app/View/Elements/monster.ctp

//if you want to set variables one by one
$this->set('varForInvertebrates', $varForMonster);

//if you want to set an array of variables
$this->set(array(
    'var1' => $var1,
    'var2' => $var2,
    ...
));

如果您仍然需要来自控制器的数据

如果您必须计算 monster 中可用的数据以便在 invertebrates 中使用它,您可以使用 CakeObject::requestAction 显式调用控制器:

# /app/View/Elements/monster.ctp

// if the controller returns a variable
$this->set('varForInvertebrates', $this->requestAction('controller/method/param1/param2'));

// if the controller returns an array of variables
$this->set($this->requestAction('controller/method/param1/param2'));