Sim*_*les 5 php cakephp cakephp-1.2
美好的一天,
我非常适合使用CakePHP 2.x,但我现在不得不在更老的CakePHP 1.2.x应用程序上工作.
我已经实现了一个Ajax分页,它对第一页完全正常,但是"下一页"链接永远不会超过第2页.所以即使加载了第2页,我的分页器的下一个链接仍然是'page:2'.
不同之处在于我的paginator链接是GLOBAL.我没有加载分页链接作为新DOM注入HTML的一部分.分页器链接位于我的ajax容器之外,并且在单击时将内容加载到容器中.paginator链接未加载到该容器中.
我很清楚CakePHP 2.x使用该$this->Js->WriteBuffer();方法打印出核心JS,据我所知,使用(以及其他)来更新分页链接.
我知道CakePHP 1.2.x没有这样的方法.
任何人都可以对此提出一些看法或提出一些意见吗?
我包含的组件和帮助:
var $components = array('RequestHandler');
var $helpers = array('Javascript', 'Html', 'Form', 'Paginator');
Run Code Online (Sandbox Code Playgroud)
我的分页:
$paginator->next('<h3>Next Page </h3>',array('escape'=>false));
Run Code Online (Sandbox Code Playgroud)
我有这些ajax加载的Ajax视图和Ajax布局.Ajax视图只包含我想要加载的内容,字面上只是循环.ajax布局只有一行<?php echo $content_for_layout ?>
我把它放在我的ajax布局的末尾,但无济于事:
<?php echo $javascript->writeEvents(); ?>
Run Code Online (Sandbox Code Playgroud)
任何帮助都将受到巨大的赞赏.
西蒙
更新:在head和Ajax视图代码中添加JS代码
头装JS:
$javascript->link('jquery-ui-1.8.13.custom.min.js', false);
$javascript->link('scrollads.js', false);
$javascript->link('jquery.form.js', false);
$javascript->link('jquery.form-defaults.js', false);
$javascript->link('jquery.jplayer.min.js', false);
$javascript->link('jquery.sparkline.min.js', false);
Run Code Online (Sandbox Code Playgroud)
$ javascript-> link('jquery.cookie.js',false); $ javascript-> link('jquery.tweet.js',false); $ javascript-> link('flowplayer.min.js',false); $ javascript-> link('jquery.validate.min.js',false); $ javascript-> link('coin-slider.min.js',false); $ javascript-> link('jquery.thslide.min.js',false); $ javascript-> link('jquery.barousel.min.js',false); $ javascript-> link('behaviour.js',false); echo""; echo""; echo"jQuery.noConflict();";
echo $asset->scripts_for_layout();
Run Code Online (Sandbox Code Playgroud)
Ajax查看文件:
<?php foreach ($galleries as $gallery): ?>
<div class="albumcontainer-wrapper">
<div class="albumcontainer-top"></div>
<div class="albumcontainer">
<a href="<?php echo Router::url('/gallery_images/index/'.$gallery['Gallery']['id']); ?>">
<?php echo $html->image($gallery['GalleryImage'][0]['Image']['default']['path_adjusted']); ?>
</a>
<h3><?php echo $gallery['Gallery']['title']; ?></h3>
</div>
<div class="albumcontainer-bottom"></div>
</div>
<?php endforeach; ?>
<?php echo $javascript->WriteEvents(true); ?>
Run Code Online (Sandbox Code Playgroud)
这是我将ajax加载的视图附加到现有内容而不是替换它的方式:
$paginator->options(
array(
'update' => 'ajaxAppendGalleries',
'indicator' => false,
'evalScripts' => true,
'complete' => 'var tmp = jQuery("#ajaxAppendGalleries").html(); jQuery("#galleryContainer").append(tmp); tmp = null; jQuery("#ajaxAppendGalleries").empty();',
)
);
Run Code Online (Sandbox Code Playgroud)
这将是伪的,因为我不熟悉 cake 1.2
,尽管我认为其中一些是微不足道的,但这些都是应该“检查列出”的点
在控制器的功能中:
确保您发送的 json 内容具有空布局且没有调试信息。
在视图中,创建与此类似的 json 结构:
data{
paginationHtml: {htmlContent: /* here comes the output of the navigation-creation-function of the paginator-helper*/,
anyOtherContent: ""},
pageContentHtml: /* the iteration that print out the paged content itself */
}
Run Code Online (Sandbox Code Playgroud)
在原始页面中使用jquery加载内容并替换innerHTML分页数据,以及分页导航链接的内容。