0

I did use FriendsOfCake/Search plugin, everything was fine until i do search created datetime.

When i submit search form, the created variable become to http://localhost:8765/admin/logs?created=2015%2F10%2F10 and i cannot find any record.

How to search type datetime with FriendsOfCake/Search plugin?

Nguyễn Anh Tuấn
  • 1,023
  • 1
  • 12
  • 19

2 Answers2

0

Well, i found the answer.

In FriendsOfCake/search plugin, they support several type of search: value, finder, like, custom, compare.

I choose use define my finder in TableClass like:

public function findCreated(Query $query, array $options) {
    if (!empty($options['created'])) {
        return $query->where(['Logs.created >=' => $options['created']]);
    }
    return $query->where(['Logs.created >= (CURDATE() - 10)']);
}

Then in i setup searchConfiguration to call findCreated:

    public function searchConfiguration() {
    $search->finder('created');
    return $search;
}

then, it's work.

If someone have better solution, just post your answer here.

Thanks.

Nguyễn Anh Tuấn
  • 1,023
  • 1
  • 12
  • 19
0

I found another way

Used callback function in search plugin:

In latest version 1.2.3 FoC Search

$this->searchManager()
        ->add('id', 'Search.Value')
        ->add('role_id', 'Search.Value')
        ->add('email', 'Search.like', [
            'before' => true, 
            'after' => true, 
            'field' => [$this->aliasField('email')]
        ])
        ->add('full_name', 'Search.Like', [
            'before' => true, 
            'after' => true, 
            'field' => [$this->aliasField('full_name')]
        ])
        ->add('created', 'Search.Callback', [
            'callback' => function($query, $args, $manager) {
                return $query->andWhere(["Users.created >=" => new FrozenTime($args['created'])]);
            }
        ]);

In view, use datepicker

View datepicker

Nguyễn Anh Tuấn
  • 1,023
  • 1
  • 12
  • 19