0
我想弄清楚如何將我的.ss頁面的值傳遞給我的控制器,以實現我構建的自定義搜索過濾器。這個想法是你點擊這個圖像或一個表單按鈕,然後頁面將設置一個會話變量並刷新自己。在頁面加載時,頁面根據會話變量中的內容加載不同的信息。我可以通過URL參數完成同樣的事情,但是在線沒有任何示例,我可以發現它們會告訴我如何執行此操作。Silverstripe會話或URL參數
基本上我有這個作爲我的PHP:
class ArticleHolder_Controller extends Page_Controller {
public function ValidateType(){
if(isset($_SESSION['mySearchTag']) && !empty($_SESSION['mySearchTag'])) {
$tag = $_SESSION['mySearchTag'];
}
else{
$tag='News';
}
$filter = $this::get()->filter('Filters:PartialMatch', $tag)->First();
if ($filter == NULL){
return NULL;
}
else{
$_SESSION['mySearchTag']=$tag;
return $this->PaginatedPages();
}
}
public function PaginatedPages(){
$paginatedItems = new PaginatedList($this->filterArticles($_SESSION['mySearchTag']), $this->request);
$paginatedItems->setPageLength(3);
return $paginatedItems;
}
public function filterArticles($tag){
return ArticlePage::get()->filter('category:PartialMatch', $tag)->sort('Date DESC');
}
}
我.SS看起來是這樣的:
<% if ValidateType() %>
<ul>
<% loop $PaginatedPages %>
<li>
<div class="article">
<h2><a href="$Link" title="Read more on "{$Title}"">$Title</a></h2>
<h3>$Date</h3>
<img class="indent" src="$Photo.link" alt="image"/>
<p class="indent">$Teaser</p>
</div>
</li>
<% end_loop %>
</ul>
<% include Pagination %>
<% else %>
<p>SORRY NO RESULTS WERE FOUND</p>
<% end_if %>
此代碼不變。我無法弄清楚如何在.ss頁面上添加一個可點擊的按鈕,該頁面將重新加載頁面並設置會話變量值。
如果我可以通過url參數實現這個功能,那麼也可以工作,我只需要知道如何在.ss頁面中設置它們以及如何在php中檢索它們。