CakePHP的启动页面,它能记住用户要去哪里?

CakePHP的启动页面,它能记住用户要去哪里?,cakephp,redirect,splash-screen,Cakephp,Redirect,Splash Screen,我想为CakePHP站点创建一个启动页面,如果用户以前没有访问过该站点(没有会话数据?),则会显示该页面,但请记住他们要去的地方(获取URL),然后当他们继续访问该页面时,会将其设置为他们要去的地方 该网站是一个日语帮助网站,有一个大约5mb的嵌入式字体,因此我想让用户选择下载本地副本,或者(可能)在该会话中关闭它 有没有关于CakePHP的最佳方法的建议?创建一份lib/Cake/Controller/AppController.php的副本,如果还没有,就放在/app/Controller/

我想为CakePHP站点创建一个启动页面,如果用户以前没有访问过该站点(没有会话数据?),则会显示该页面,但请记住他们要去的地方(获取URL),然后当他们继续访问该页面时,会将其设置为他们要去的地方

该网站是一个日语帮助网站,有一个大约5mb的嵌入式字体,因此我想让用户选择下载本地副本,或者(可能)在该会话中关闭它


有没有关于CakePHP的最佳方法的建议?

创建一份
lib/Cake/Controller/AppController.php
的副本,如果还没有,就放在
/app/Controller/AppController.php
上。将其父级的
beforeFilter()
方法重写为以下内容:

function beforeFilter() {
    parent::beforeFilter();

    // check for session
    if (!$this->Session->check('been_here')){
        // If the visitor hasn't been here before, tell your session object he has now.
        $this->Session->write('been_here', true);

        // Store current request URI in session and send him to the splash page
        $this->Session->write('redirect_url', $_SERVER['REQUEST_URI']);
        $this->redirect(array('controller'=>'pages', 'action' => 'splash'));
    }
}
现在,在您的
PagesController::splash()
,您应该呈现您的启动页面,控制访问者的操作,然后将它们发送到
$this->Session->read('redirect_url')上的任何位置。请记住在重定向之前使用
$this->session->delete('redirect_url')
从会话中删除此数据


希望能有所帮助。

我想你已经回答了你的问题,SESSION and COOKIE是你的解决方案。这不是编写解决方案的最优雅的方式,但你可以获得想法并在以后加以完善。谢谢Luchomalina,我会尝试一下。提示-如果某个答案是一个解决方案,请单击答案左侧的复选框大纲来标记它。您好,很抱歉反应太晚,我没有时间尝试您的建议,我现在遇到了问题,您能否澄清:您给出的示例中是否有任何值需要更改或逐字复制?(我离开了'action'=>'splash',在控制器中创建了一个函数splash(),然后在视图/页面中创建了一个splash.ctp,但它不会加载。(另外,我只对具有该字体的视图使用过default.ctp,所以我应该告诉它在哪里使用不同的布局,或者在if(而不是splash)中包装css调用。)循环?对于过于详细的解释请求,很抱歉。是的,它应该按原样工作,但仅当用户以前没有“在这里”时才将其发送到启动页,因此请注意它只会发生一次。发生了什么?尝试直接调用/pages/splash并查看发生了什么。您还可以调试代码以查看失败的地方。