如何在cakePHP应用程序的my home.ctp中请求变量?

如何在cakePHP应用程序的my home.ctp中请求变量?,php,cakephp,variables,Php,Cakephp,Variables,我使用MVC结构创建了一个名为“sections”的页面(视图位于app/views/sections文件夹中,模型位于model文件夹中,控制器位于controller文件夹中),当我请求变量$test时,它工作正常,没有任何错误 当我想在my home.ctp中请求此变量时,它会向我提供一个错误,表示该变量未定义 cakePHP中是否有任何方法可以在您希望的任何页面上请求该变量 提前通知 在MVC堆栈中,您需要使用控制器中的数据设置变量,然后将它们传递给视图 因此,在您的示例中,您需要$th

我使用MVC结构创建了一个名为“sections”的页面(视图位于app/views/sections文件夹中,模型位于model文件夹中,控制器位于controller文件夹中),当我请求变量$test时,它工作正常,没有任何错误

当我想在my home.ctp中请求此变量时,它会向我提供一个错误,表示该变量未定义

cakePHP中是否有任何方法可以在您希望的任何页面上请求该变量


提前通知

在MVC堆栈中,您需要使用控制器中的数据设置变量,然后将它们传递给视图

因此,在您的示例中,您需要
$this->set('myvar',$item)
在您的
部分controller
中,然后在您的视图中,您将能够
回显$myvar


确保在控制器的
部分的
home()
方法中设置,否则它在
home
视图中不可用。

在MVC堆栈中,您需要在控制器中设置带有数据的变量,然后将它们传递给视图

因此,在您的示例中,您需要
$this->set('myvar',$item)
在您的
部分controller
中,然后在您的视图中,您将能够
回显$myvar


请务必在
控制器的
部分的
home()
方法中设置此项,否则它将无法在
主页
视图中使用。

站在deceze的评论和Davidell的回答的肩膀上,我想他们已经设法勾勒出了您想要达到的目标的良好视图。大概因此,对你所看到的和你所拥有的东西的松散理解

默认情况下,
PagesController::display()
方法生成主页视图(
home.ctp
)。我怀疑这就是你说的。这就是说,您在
SectionsController
的方法中设置的变量将不可用于您的主页,该主页是由不同控制器中的不同方法创建的。如果希望变量可用于所有视图,可以执行以下几项操作:

  • 您可以在
    config/core.php
    文件中设置变量(一般不推荐)
  • 如果它是一个常量,您可以在
    config/bootstrap.php
    中设置它。我的意思是,这是一个硬编码的值,而不是动态生成的值。是否将变量创建为常量并不重要
  • 您可以在
    AppController
    中的
    beforeFilter()
    beforeRender()方法中设置。所有自定义控制器(假设您遵循了协议)都继承自
    AppController
    。如果选择此路径,请复制一份
    cake/libs/controller/app\u controller.php
    ,并将其放置在
    app/
    目录中

  • 根据我的理解,我认为这些方法最能满足您的需求。

    站在deceze的评论和Davideyell的回答的肩膀上,我认为他们已经成功地勾勒出了您想要达到的目标的一个像样的视角。大概因此,对你所看到的和你所拥有的东西的松散理解

    默认情况下,
    PagesController::display()
    方法生成主页视图(
    home.ctp
    )。我怀疑这就是你说的。这就是说,您在
    SectionsController
    的方法中设置的变量将不可用于您的主页,该主页是由不同控制器中的不同方法创建的。如果希望变量可用于所有视图,可以执行以下几项操作:

  • 您可以在
    config/core.php
    文件中设置变量(一般不推荐)
  • 如果它是一个常量,您可以在
    config/bootstrap.php
    中设置它。我的意思是,这是一个硬编码的值,而不是动态生成的值。是否将变量创建为常量并不重要
  • 您可以在
    AppController
    中的
    beforeFilter()
    beforeRender()方法中设置。所有自定义控制器(假设您遵循了协议)都继承自
    AppController
    。如果选择此路径,请复制一份
    cake/libs/controller/app\u controller.php
    ,并将其放置在
    app/
    目录中

  • 根据我的理解,这些是最能满足您需求的方法。

    您所说的“请求变量”是什么意思?从何处请求?在节控制器$this->set('test',$this->Section->findAllThreaded(null,null,'name')中指定的变量;“请求变量”是什么意思?从何处请求?在节控制器$this->set('test',$this->Section->findAllThreaded(null,null,'name')中指定的变量;如果要对其执行find(),请确保在视图中pr()该变量,以确保该变量未返回空结果集!您所说的“home()方法”是什么意思?CakePHP约定声明您的视图的调用与控制器方法相同。所以我假设控制器中有一个home()方法,就像有一个主视图一样。关于控制器的更多信息,我在我的app\u控制器的任何地方都找不到home()方法。。你能给我一些关于如何在我的控制器上写的建议吗?(和哪个控制器)?Thnx!控制器的构造确实超出了您的问题范围。我建议您阅读CakePHP书籍,如果您正在对其执行find(),请确保在视图中pr()该变量,以确保它不会返回空结果集!您所说的“home()方法”是什么意思?CakePHP约定声明您的视图的调用与控制器方法相同。所以我假设控制器中有一个home()方法,就像有一个主视图一样。关于控制器的更多信息,我找不到任何home()方法