【问题标题】:CakePHP - Adding a "back to top" button on multiple pagesCakePHP - 在多个页面上添加“返回顶部”按钮
【发布时间】:2017-11-03 11:29:53
【问题描述】:

我以前从未使用过 CakePHP,我需要添加一个按钮来将用户带回到页面顶部。我的问题是如何使用框架对多个但不是所有页面进行此操作?

我想不通,需要一个快速的解决方案。任何帮助表示赞赏!

【问题讨论】:

  • 我认为这与CakePhp无关!可以使用htmljavascript 来实现,试试这个:w3schools.com/howto/howto_js_scroll_to_top.asp
  • 你的意思是如何为多个页面而不是所有页面做到这一点?
  • 我只需要在我的项目中的某些页面上添加一个按钮,而不是所有页面。

标签: html css cakephp model-view-controller cakephp-2.0


【解决方案1】:

有很多方法可以解决这个问题。最简单的是用一个简单的条件编辑你的 default.ctp(或任何一个)布局:

<?php if (!empty($backToTop)) : ?>
  <!-- html & JS back to top code here-->
<?php endif; ?>

然后在您希望返回顶部按钮显示的控制器操作中:

$this->set('backToTop',true);

如果没有“返回顶部”脚本只有少数例外,那么您可能希望有条件排除代码

【讨论】:

  • 控制器不应该决定这个纯视图逻辑,它破坏了MVC的思想。
  • 这是一个相当僵化的“MVC 理念”……尽管如此,这里与 MVC 模式本身完全没有冲突。控制器设置一个 var 供视图使用(或不使用)。正如我所说,有很多方法可以解决这个问题,考虑到 @cheesycode 是 Cake 的新成员,我选择了最简单和最实用的方法
  • 您从控制器中设置了一个 var,它只与视图的上下文相关,因为它控制的东西与视图相关。控制器不关心它,也根本不使用这个 var 做任何事情。如果你想这样做,我会在App\View\AppViewinitialize()`方法中设置它,但显然不在控制器中。 var 也可以根据需要在特定视图文件中被覆盖。
  • 好的,我有兴趣在实践中看到您的解决方案。为什么不更新你的答案呢?仅供参考,我认为 cheesycoder 正在使用 Cake2,但无论如何都渴望看到您的 3.X 解决方案 - 我会投票赞成您的 3x 答案
【解决方案2】:

为您的应用创建一个通用实用程序助手中的助手或方法,以呈现按钮或使用您可以在需要的地方包含的元素。

如果您想在每个页面上调用它,请将您的助手或元素调用放入布局文件中。

如果您需要某个页面上的异常,您也可以将该逻辑放入辅助方法或元素中,并检查附加到视图的请求对象是否与您所需的控制器和操作匹配。

官方文档:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多