【问题标题】:Cakephp store session vars in session id to share url between usersCakephp 在会话 id 中存储会话变量以在用户之间共享 url
【发布时间】:2011-04-19 21:58:36
【问题描述】:

我的脚本目前运行良好,但我一直在尝试解决一种在不同机器上的两个浏览器之间传递会话值(以维护表单搜索条件值)的方法(用于共享查询结果)。

我正在研究两种方法:

1) 从搜索字符串 url 路径中提取 url 参数,例如:...url/50/1/4/5/98764 并将它们回显到搜索表单的值中。

2) 为独立用户使用会话(我现在使用它来维护值)。当然,这对于单个浏览器来说效果很好。

我的主要问题是在保持表单字段中的搜索值的同时共享搜索结果的最佳方法是什么?

是的。我知道像这样分享会话信息是个坏主意,但它要求我别无选择!

【问题讨论】:

  • 在您的other question 中为您提供了帮助,我终生无法理解您为什么仍在尝试共享会话信息。会话并不意味着共享。参数与用户无关。使用我对上述问题的回答中描述的命名参数解决方案。
  • Tyler,如果您阅读了我上面的整篇文章,您就会知道我这样做不是出于我的选择!我正在使用命名参数。我需要从 url 中提取参数以将它们传递给会话并在表单中显示它们。
  • 对不起,我没有看错你的问题。我很抱歉。答案即将到来。

标签: session url cakephp


【解决方案1】:

最佳做法是 #1,从 url 中提取参数并将它们显示在表单上。您可以通过保持 url 的参数和表单相同来保持它非常干净。我使用白名单来提取并推送到视图:

function search() {
    if(isset($this->data)) {
        // redirect to search with named params
        ...
    } else {
        $whitelist = array('param1','param2','param3');
        foreach($whitelist as $param) {
            if(isset($this->params['named'][$param])) {
                $this->data['Model'][$param] = $this->params['named'][$param];
            }
        }
    }
}

假设您的表单类似于:

echo $form->input('param1'),
     $form->input('param2'),
     $form->input('param3')

【讨论】:

  • 嗨,泰勒,感谢您提供的信息。不用担心之前的帖子。如果我一遍又一遍地对同一个人回答同一个问题,我也会感到沮丧!但我认为您上面的解决方案是命名实际的表单字段???我希望用提取的 url 数据填充表单值,而不是更改表单输入名称。例如,邮政编码字段将保持不变,但值(在输入选项中)会像 value="98756"(从 url 路径中提取)一样回显。我误读了您的回复吗?
  • 在您的控制器操作中,如果您将数据加载到 $this->data.并假设索引名称对齐,formhelper 将自动使用该数据填充表单。例如,在您的控制器中输入$this->data['Model']['param1'] = 'test';,然后在您的表单中输入echo $form->input('Model.param1'),该字段将自动填充。
  • 我明白你在说什么。感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多