2012-03-23 8 views
0

Когда пользователь выполняет поиск по дате, мне нужно передать дату в качестве параметра поиска через URL-адрес.Дата передачи в качестве параметра параметра поиска

Как: 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, а затем я могу изменить в другой формат после отправки формы?

ответ

4

Вы можете преобразовать дату в штамп времени и передать с помощью:

$date = '03/15/2012'; 

$timestamp = strtotime($date); 

передать это URL.

Преобразовать обратно в «мм/дд/гг» с помощью:

echo date('m/d/Y',$timestamp); 
+0

Где я могу конвертировать код? Прежде чем отправить, как? – Rikesh

+0

Получите сообщение в вашем контроллере cakephp и используйте метод перенаправления. – Ben

+0

В качестве альтернативы вы можете использовать формат базы данных: 'YYYY-MM-DD' в качестве переданного аргумента. пока дата содержит только '-', вы в порядке. – mark

0

Вы можете urlencode значение даты при передаче его как части URL-адреса. Действие контроллера, которое обрабатывает запрос, должно будет использовать urldecode, чтобы вернуть его обратно к исходному значению даты с помощью косой черты.

1

Параметры, которые не названы передаются к действию, так что вы могли бы также сделать это в вашем контроллере:

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

} 

и если вы все еще хотите использовать это действие без прохождения какой-либо даты, используйте это и испытание, если значения приведены:

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

} 

Edit

Если это происходит от формы, вы должны возможно использовать POST вместо GET для формы и извлечение значения, как это:

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

     //Do you search here 
    } 
} 

Есть может решение в зависимости от ваших потребностей ... ;-)

+0

Я отредактировал мой вопрос. вы можете посмотреть на массив параметров, который я получаю. – Rikesh

+0

В этих параметрах URL показывает двоеточие между 'created' и' 03', а действие - 'index'. Вы уверены, что используете URL? Он должен быть без двоеточия (как в вашем вопросе), и действие должно быть вызвано 'created' в вашем контроллере – nIcO

+0

да массив прав .... только что отредактировал мой вопрос ... извините за это – Rikesh

Смежные вопросы