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'));
假设我有一个非常复杂的应用程序。我有一个调用 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'));