将日期作为搜索参数问题传递

时间:2012-03-23 06:33:37

标签: php cakephp date

当用户按日期搜索时,我需要通过网址将日期作为搜索参数传递。

赞:http://siteurl/post/index/created:03/15/2012

正如您所看到的,日期格式为mm/dd/yy,这会产生问题,因此我只会在请求中获得03作为值。

已编辑:来自我的参数的一些代码我进入控制器。

Array
(

[controller] => posts

[action] => index

[named] => Array
    (
        [created] => 03
    )

[pass] => Array
    (
        [0] => 15
        [1] => 2012
    )

[plugin] => 
[form] => Array
    (
    )

[url] => Array
    (
        [url] => /posts/index/created:03/15/2012
    )

[isAjax] => 
)

用户是否可以选择mm/dd/yy格式的日期,然后在提交表单后我可以更改为其他格式?

3 个答案:

答案 0 :(得分:4)

您可以将日期转换为时间戳并使用以下方式传递:

$date = '03/15/2012';

$timestamp = strtotime($date);

将此传递给网址。

使用:

转换回'mm / dd / yy'
echo date('m/d/Y',$timestamp);

答案 1 :(得分:1)

未命名的参数将传递给操作,因此您也可以在控制器中执行此操作:

function index($month, $day, $year)
{

}

如果您仍想在不传递任何日期的情况下使用此操作,请使用此操作并测试是否给出了值:

function index($month = null, $day = null, $year = null)
{

}

修改

如果它来自表单,您应该为表单使用POST而不是GET,并检索如下值:

function index()
{
    if(isset($this->data['Post']['created']))
    {
        $created = $this->data['Post']['created'];

        //Do you search here
    }
}

根据您的需要,可能有解决方案......; - )

答案 2 :(得分:0)

当您将日期值作为URL的一部分传递时,可以urlencode。处理请求的控制器操作需要使用urldecode将其转换回带有斜杠的原始日期值。