gpt4 book ai didi

cakephp - 如何从 Controller 将变量发送到 CakePHP 3.x 中的元素,并在不同 View 中使用元素时保留变量?

转载 作者:行者123 更新时间:2023-12-02 04:15:24 25 4
gpt4 key购买 nike

我创建了一个应用程序,允许管理员将 slider 内容保存到数据库,现在我想在主页上包含 slider 。我有一个带有 slider 功能的幻灯片 Controller ,只需将幻灯片内容发送到 slider View 。

这是 Controller 功能:

public function slider()
{
$slides = $this->Slides->find('all');
$this->set('slides', $slides);
$this->set('_serialize', ['slides']);
}

该函数的 View 中仅包含以下内容:

<?= $this->element('slider'); ?>

然后我创建了一个名为 slider 的元素文件并在那里处理幻灯片。当我转到 url/slides/slider 时, slider 正在工作,但是当我转到根页面或主页时, slider 为空。它似乎没有在元素中保留 $slides 变量。

在主页上:

<?= $this->element('slider'); ?> // then the rest of the home page follows this.

那么如何保留该变量或使其能够在主页上显示 slider View ?

最佳答案

您的情况的最佳实践是使用 Cells :

View cells are small mini-controllers that can invoke view logic and render out templates. They provide a light-weight modular replacement to requestAction().

  1. 从基础应用程序目录运行 cd bin从控制台
  2. 然后运行cake bake cell Slider从控制台
  3. 转到src/View/Cell/SliderCell.php .
  4. 编辑显示函数,

如下

public function display()
{
$this->loadModel('Slides');
$slides= $this->Slides->find('all');
$this->set('slides', $slides);
}
  • 现在转到src/Template/Cell/Slides/display.ctp ,然后玩 $slides在模板中。
  • 要在任何地方渲染单元格,只需使用:<?= $this->cell('Slider') ?>
  • 关于cakephp - 如何从 Controller 将变量发送到 CakePHP 3.x 中的元素,并在不同 View 中使用元素时保留变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114470/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com