如何获取我的功能在哪个页面上使用?

How can I get which Page my function is used on?

Silverstripe:我的页面上有一个包含多个页面的博客,每页 10 个条目。 我想让我的控制器知道当前正在查看博客的哪个页面。

我有以下代码:

public function dependsOnPage() {

    $page = getPageHere; /*How can I get which page of the blog I'm currently on?*/

    $i = ($page*10)-10;

    echo $i;    
}

第二页的 URL 例如:?start=10 第三个像这样 ?start=20

有谁知道我如何在 Silverstripe 中做到这一点?

我试过了:

    //echo SiteTree::get_by_link('news')->Link();

    //echo (Director::urlParam());

    //echo Director::getCurentPage();

    echo Director::get_current_page();

    echo Director::baseURL();

    $test = $_GET['url'];
    echo $test;

    echo $this->request->param('ID');

    // echo Director::absoluteURL('', false);

    //echo $this->getCurentPage();

    //echo $this->request->param() ;

    //echo $this->URLSegment;

    //echo Director::absoluteBaseURL();

    //echo $this->param();

    //echo $this->getURLParams();

    //echo SS_HTTPRequest->param();

解决方案:

$urlParam = Controller::curr()->getRequest()->getVar('start');

我们可以在 SS_HTTPRequest object. We can get the SS_HTTPRequest object from our Controller 上使用一些函数检索 Post 和获取变量。

SS_HTTPRequest 有一个函数 getVar($variableName) 来检索 Get 变量。

如果您的函数在您的控制器中,您可以调用以下命令来获取您的 $_GET 变量:

$startValue = $this->getRequest()->getVar('start');

如果您的函数在您的对象中 class 您首先需要在获取 $_GET 变量之前获取页面控制器:

$startValue = Controller::curr()->getRequest()->getVar('start');