我不知道你是否有更好的想法做到這一點,但有我的!它適用於我的用法。我是一個初級編碼器;)
routes.yml
Director:
rules:
'ajax//$Action/$ID': 'AjaxController'
ajaxcontroller.php
class AjaxController extends Controller {
private static $allowed_actions = array(
'news'
);
public function news(){
$News = News::get()->sort('Sort',DESC);
if (Director::is_ajax()){
// Ajax!
return $this->renderWith('AjaxInclude', array('News' => $News));
} else {
// Not ajax!
//return print_r($Pages);
}
}
}
包括/ AjaxIncludes.ss
<% loop News %>
<p>$Title</p>
<% end_loop %>
HomePage.php或其他網頁
class HomePage_Controller extends Page_Controller {
public function init() {
parent::init();
Requirements::javascript($this->ThemeDir()."/javascript/ajax.js");
}
}
個
ajax.js
jQuery.noConflict();
(function($) {
$(document).ready(function() {
var refreshId = setInterval(function() {
$.ajax({
url: "ajax/news",
cache: false,
dataType: "html",
success: function(data) {
if(!data){
$("#responsecontainer").removeClass('online');
$("#responsecontainer").addClass('offline');
$("#responsecontainer").fadeOut();
//alert("offline");
$("#responsecontainer").html(data);
} else {
$("#responsecontainer").removeClass('offline');
$("#responsecontainer").addClass('online');
//alert("online");
$("#responsecontainer").html(data);
}
}
});
}, 1000 * 5);
});
}(jQuery));
Finaly,ID responsecontainer必須在HomePage.ss被激活或desactivate
你需要在你的控制器呈現你想要的部分行動。您也可以重用Director :: is_ajax()中可能存在的效用。也可以看看。 http://ajax-silverstripe.mmkdigital.com/#/ – wmk
不錯!不完全是我需要的,但知道如何將代碼從控制器傳遞到模板很有用。謝謝! – StefGuev
那麼,你的問題太過寬泛,以至於沒有更好的答案。如果您告訴我們更多關於問題的銀條紋部分以及您已經嘗試過的代碼,我們可以幫助更多... – wmk