【问题标题】:cakephp addCrumb Html Helpercakephp addCrumb Html Helper
【发布时间】:2013-02-15 17:31:26
【问题描述】:

我正在尝试在 Cake php 应用程序中使用 Html Helper 的面包屑功能来创建面包屑轨迹。我按照他们在手册上所说的方式进行操作(一直滚动到底部以查看它),但我面临的问题是,当通过 Ajax 加载视图时(通过使用 jquery 的 .load() 函数例如),我的面包屑没有显示。我认为这是:

<?php echo $this->Html->addCrumb('Users', '/users'); ?>

这在我的布局中:

<?php echo $this->Html->getCrumbs(' >> ', 'Home'); ?>

但是什么都没有显示。当视图不是通过 Ajax 加载时,一切都很好。谁能告诉我为什么会这样?

谢谢

【问题讨论】:

  • 您是否使用 ajax 调用与您正在测试的页面相同的页面?
  • 不,这只是我通过 Ajax 调用的视图,它已加载到主页上
  • 这些页面有什么区别?如果您想回答您的问题,我们将需要更多信息。
  • 我们有一个主页(不是通过 ajax 加载的),我们有通过 ajax 加载到主页上的视图(单击按钮后),仅此而已

标签: php jquery ajax cakephp cakephp-1.3


【解决方案1】:

您可以在视图中再次输出 crumbs,将其隐藏,然后在 .load() 之后将它们附加到布局中的 crumbs 中。否则你将无法做到这一点。如果您使用load() 注入内容,“布局”碎屑已经被渲染并且不会再次渲染。

一些示例代码让您了解我将如何做到这一点:

// layout
echo '<div class="crumbs">' . $this->Html->getCrumbs() . '</div>';
echo '<div class="content"><!-- AJAX content goes here--></div>';

// view
$this->Html->addCrumb('My Page');
echo '<div class="hiddenCrumbTrail">' . $this->Html->getCrumbs() . '</div>';
echo 'Here is my page content';

// js
$(function() { 
    $('.content').load('/controller/action'); // load content
    $('.crumbs').empty(); // remove existing
    $('.crumbs').append($('.hiddenCrumbTrail')); // append with updated
});

【讨论】:

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