将变量从子视图传递到其父视图,就像在cakephp 3中的元素一样

时间:2014-12-15 11:49:42

标签: cakephp view extend

我有一个包含

的子视图文件
<!-- src/Template/Posts/view.ctp -->
<?php
    $this->extend('/Common/view');
    //1
    $this->assign('title', $post);
    //2
    $this->start('sidebar');
    //...
    $this->end();
?>

及其包含

的父级
    <!-- src/Template/Common/view.ctp -->
    <h1><?= $this->fetch('title') ?></h1>
    <?= $this->fetch('sidebar') ?>

我可以通过方法1,2传递字符串。 但是如何将变量从子视图传递给其父视图?

2 个答案:

答案 0 :(得分:5)

感谢所有那些试图告诉&#34;这是不可能的&#34; 在子视图中设置变量,如

$this->set('toParent' , $toParent);

并在父视图中轻松使用

$toParent = $this->get('toParent');

正如您所见,这是可能的:)

答案 1 :(得分:0)

MVC paradigm中,视图不应该将变量传递给其他任何东西,只需解析并显示给定的变量即可。传递变量是控制器的工作。

设置完成后,您可能尝试实现的是将输出呈现在子视图中父视图或布局中存在的块。在这种情况下,您应该使用$this->assign('blockname', $variable);View Blocks中解释的等效函数。