Php Symfony 1.4将变量从操作传递到视图

Php Symfony 1.4将变量从操作传递到视图,php,symfony-1.4,Php,Symfony 1.4,我是Symfony 1.4的新手,我正在加入一个需要创建新仪表板的项目 我在analysis/actions/actions.class.php中创建了以下控制器 public function executeTestDashboard(sfWebRequest $request){ $foo = "FooBar"; $this->foo = "ThisFooBar"; return $this->renderPartial('analyse/testDas

我是Symfony 1.4的新手,我正在加入一个需要创建新仪表板的项目

我在analysis/actions/actions.class.php中创建了以下控制器

public function executeTestDashboard(sfWebRequest $request){

    $foo = "FooBar";
    $this->foo = "ThisFooBar";
    return $this->renderPartial('analyse/testDashboard', array('foo' => $foo);

}
analysis/templates/_testDashboard.php视图,它是home/templates/indexSuccess.php中包含的一部分:

<div class="testDashboard">
        <h1>TEST</h1>
        <?php var_dump($foo);?>
</div>

试验

它不起作用,$foo既不是“FooBar”也不是“ThisFooBar”,而是“null”。我应该如何进行,以使其工作?(或者甚至检查我的executeTestDashboard控制器是否已处理?

您应该阅读Symfony 1.4中的
部分和
组件。如果使用
include\u partial()
在模板中包含部分,则仅呈现部分,而不执行控制器代码

如果您需要比简单渲染部分更具逻辑性的内容,则应使用类似以下内容的组件:

analysis/actions/componetes.class.php中

public function executeTestDashboard(){

    $this->foo = "FooBar: ".$this->getVar('someVar');
}
<div class="myDashboard><?php echo $foo ?></div>
analysis/templates/_testDashboard.php

public function executeTestDashboard(){

    $this->foo = "FooBar: ".$this->getVar('someVar');
}
<div class="myDashboard><?php echo $foo ?></div>

这里有几个例子可以更好地解释这一点:

// $foo is passed in TestDashboardSuccess.php, which is the default view rendered.
public function executeTestDashboard(sfWebRequest $request)
{
    $this->foo = "ThisFooBar";
}

// Different template indexSuccess.php is rendered. $foo is passed to indexSuccess.php
public function executeTestDashboard(sfWebRequest $request)
{
    $this->foo = "ThisFooBar";
    $this->setTemplate('index');
}

// Will return/render a partial, $foo is passed to  _testDashboard.php. This 
// method is often used with ajax calls that just need to return a snippet of code
public function executeTestDashboard(sfWebRequest $request)
{
    $foo = 'ThisFooBar';

    return $this->renderPartial('analyse/testDashboard', array('foo' => $foo));
}