:
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传递变量后,它不会在视图中回答变量。
答案 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.
标记