如何将$$变量传递给CakePHP中的控制器进行查看?

时间:2012-07-09 13:33:05

标签: php cakephp variables

AppController中的

function beforeFilter() {

    $company = 'name of Company';

    $this->set(compact('company'));

}

在Controller类中:

function companyinfo() {
    $logo = '<div><?php $this->Html->image('logo'); ?></div>';
    $welcome = 'welcome to $$company!';

    $this->set(compact('logo','welcome'));
}

function beforeFilter() {
    parent::beforeFilter();
}
中的

<html>
    <body>
        <?php echo $logo; ?>
        <?php echo $welcome; ?>
    </body>
</html>

在通过控制器从AppController传递变量后,它不会在视图中回答变量。

2 个答案:

答案 0 :(得分:2)

1)当你使用$this->set(compact('company'));时,它不会设置一个变量用于任何控制器 - 它将$company传递给视图。

2)您正在尝试使用Helper(仅在视图中可用)在字符串中编写PHP代码

$logo = '<div><?php $this->Html->image('logo'); ?></div>';

3)想要将数据从AppController传递到Controller到View是不常见的。

你可能想要做的是这样的事情:

//App Controller 
function beforeFilter() {
    $company = 'name of Company';
    $this->set(compact('company'));
}

//Controller
function companyinfo() {
    $logo = 'logo';
    $this->set(compact('logo'));
}

//Layout file (or view file, but I assume it's layout since you're getting data in the AppController)
<?php
echo '<div>' . $this->Html->image($logo) . '</div>';
echo "Welcome to " . $company;

我的意思是以最有建设性的方式(我们都去过那里)。看起来你正在努力解决一些常见的PHP概念。在你对CakePHP过于沉重之前,我建议你尝试使用通用PHP中的一些冗长的教程 - 然后当你对它感到完全熟悉时,请深入了解CakePHP。

答案 1 :(得分:0)

要让公司进入视图,您可以在appcontroller中设置它,如果您希望它在整个站点的所有视图中或在特定控制器内可用,如果您只希望它在您在其中设置的功能的视图中可用。无论哪种方式,您都需要正确使用set函数。例如:

$this->set('company', 'Name of Company');

OR

$company = 'Name of Company';
$this->set('company', $company);

之后,您将能够访问视图中的$company变量。

echo $company;输出Name of Company

关于戴夫的问题:

<?php $welcome = 'Welcome to $$company'; ?> <html><body><?php echo $welcome; ?></body></html>

将写成:

<html><body><?php echo "Welcome to ". $company; ?></body></html>

但是,您应该真正考虑将layouts与cakephp一起使用,这样您就不需要在每个视图文件中使用<html>, <head>, <body>, etc.标记