小编Fre*_*ium的帖子

如何在循环中获得倒数第二个项目

Silverstripe有助手获取循环中的第一个和最后一个项目以及循环中当前项目的位置/计数.

虽然我找不到如何捕捉它是第二个到最后一个项目...

我尝试过琐碎的事情(通常在大多数语言中都有用),例如

<!-- Right now I know the total is 11, so result should be 10 -->
<!-- Total value will always vary so needs to be dynamically worked out -->

<% if $Pos == $TotalItems-1 %>
    $Pos
<% end_if %>

     &&

<% if $Last-1 %>
    $Pos
<% end_if %>
Run Code Online (Sandbox Code Playgroud)

这不起作用,AFAIK不同于JavaScript或PHP或者你不能打一个-1来获得循环/数组中倒数第二个项目.

我需要做些什么才能做到这一点?

silverstripe

5
推荐指数
1
解决办法
702
查看次数

如何捕获AJAX请求(SilverStripe 3.4)

我有一个适用于整个站点每个页面的表单,需要异步发送它,而又不能将用户带到任何地方。

我不知道要捕获发送的数据...我正在使用Page.php,因为我认为,因为它在它所属的每个页面上;我在SilverStripe网站上浏览了Ajax教程,但实际上并没有涵盖该主题,仅涉及正在研究的示例网站。我看了,看了视频,但还是不明白。

我需要知道的是将数据发送到哪个URL(我假设它是自页面以来适用于所有页面的,对吗?)以及如何捕获请求...
目前,我已准备好脚本来发送信息,但是不要不了解我需要在服务器端做什么。

这是后端atm中的功能,我该怎么做才能使它工作?

Page.php

 class Page_Controller extends ContentController {

    private static $allowed_actions = array(
        'flagDated'
    );

    public function flagDated(SS_HTTPRequest $request){

        echo $request;

        if($request->isAjax()){
            //
        }
    }

    public function init() {
        parent::init();
        Requirements::javascript('themes/three-two/js/flag-dated.js');
    }
 }
Run Code Online (Sandbox Code Playgroud)

更新资料

我想我已经有些工作了。我发现,重新安排自己拥有的东西可以使我更加接近需要的位置。现在的问题$request->isAjax()是失败并且正在返回basic return...
我仍然不确定自己在做什么错- 我发现 在请求末尾添加?ajax=1 可以解决此问题

 class Page extends SiteTree {

    // ...

    public static $allowed_actions = array(
        'flagDated'
    );

 }

 class Page_Controller extends ContentController {

    public function flagDated(SS_HttpRequest $request){

        if($request->isAjax()){
            return '$request';
        }

        return …
Run Code Online (Sandbox Code Playgroud)

silverstripe

1
推荐指数
1
解决办法
820
查看次数

标签 统计

silverstripe ×2