Intereting Posts
Как создать представление с помощью mysqli_multi_query? как получить роль от Zend_Auth / Zend_ACL при использовании адаптера Doctrine? все вместе Самый простой способ создать / получить php_memcache.dll для PHP 5.4 Сломанные ссылки, полученные из php, включают ссылки отправка кеша-контроль / истекает / прагма с ответом 404 – действительный / понятный современными браузерами? Хорошо ли иметь BaseController и заставить все контроллеры расширять этот класс? MySQL правильный синтаксис для использования рядом с '' при ошибке линии 1 Могу ли я сделать это с помощью только SQL? SHA1 vs md5 vs SHA256: что использовать для входа в PHP? XML-реформация с помощью DOM Larvel 4.2 artisan CLI больше не работает после обновления композитора PHP mkdir: проблема с разрешением отказа Php7.1 Неустранимая ошибка: оператор не поддерживается для строк Кнопка PayPal Buy Now: добавьте мою цену? Как создать сервер websockets в PHP

даты фильтрации. Cakephp возвращает массив вместо даты, это нормально?

Я создаю фильтр для некоторых списков с разбивкой по страницам, и я хочу показать элементы, созданные между двумя датами. Но я не уверен, как это сделать правильно.

Вид:

<?php echo $this->Form->create('Logs');?> <fieldset> <?php echo $this->Form->input('start',array('type'=>'date')); echo $this->Form->input('end',array('type'=>'date')); ?> </fieldset> <?php echo $this->Form->end('Filter');?> 

Контроллер:

 ... $conditions['Logs.created BETWEEN ? AND ?'] = array( $this->data['Logs']['start'],$this->data['Logs']['end']); ... 

проблема в том, что $this->data['Logs']['start'] и $this->data['Logs']['end'] являются массивами, и мне нужны строки:

 [Logs] => Array ( [start] => Array ( [month] => 04 [day] => 19 [year] => 2011 ) [end] => Array ( [month] => 04 [day] => 19 [year] => 2011 ) ) 

Я знаю, что я мог бы использовать некоторые функции php для преобразования массива в строку, но в торте должна быть какая-то функция или что-то в этом роде. Я чувствую, что я не правильно создаю представление

Спасибо за вашу помощь.

Solutions Collecting From Web of "даты фильтрации. Cakephp возвращает массив вместо даты, это нормально?"

Думаю, лучшим выбором для вас было бы написать свою собственную вспомогательную функцию и вызвать ее в вашем контроллере.

В этом разделе рассказывается о том, как создать своего помощника: как лучше всего преобразовать данные формы выбора даты CakePHP в объект PHP DateTime?

Вы можете загрузить его в контроллер таким образом

 App::import('Helper', 'DateHelper'); $dateHelper = new DateHelper(); 

Кроме того, почему бы просто не переключиться на обычный ввод текста и, возможно, JS datepicker? Это позволит решить ваши проблемы, не прибегая к вспомогательному маршруту. Тем не менее, вы потеряете доступность выпадающего списка.

вы можете использовать помощник времени, и это функция daysAsSql

 daysAsSql( $begin, $end, $fieldName, $userOffset = NULL ) 

daysAsSql возвращает строку в формате "($ field_name> = '2008-01-21 00:00:00') AND ($ field_name <= '2008-01-25 23:59:59')". Это удобно, если вам нужно искать записи между двумя датами включительно.

См. Помощник времени