0

I have a requirement to adding a checkbox set to the admin search, I have done this using

updateSearchContext

enter image description here

in a admin extension, But search not working, Anyone knows how to do it? Or I want to know silverstripe cant do this? Thank you!

UserAdmin.php
class UserAdmin extends ModelAdmin
{
    private static $managed_models = [
        Member::class
    ];

    public function getList()
    {
        $list = parent::getList();
        $params = $this->getFilterParams();

        if ( isset($params['InternalExternal']) ) {
            if (!is_array($params['InternalExternal']) && strpos($params['InternalExternal'], ',') !== false) {
                $internalExternalParams = explode(',',$params['InternalExternal']);
            } else {
                $internalExternalParams = $params['InternalExternal'];
            }
            $list = $list->filter('InternalExternal', $internalExternalParams );

        }


        return $list;
    }

    public function getFilterParams()
    {
        $class = $this->sanitiseClassName($this->modelClass);
        $body = $this->getRequest()->getBody();

        parse_str($body, $array);
        $params = [];
        //........

    }
}

UserAdminExtension.php

class UserAdminExtension extends DataExtension
{

    public function updateSearchContext(&$context)
    {
        $source = singleton(Member::class)->dbObject('InternalExternal')->enumValues();
        array_shift($source);

        $InternalExternal = CheckboxSetField::create(
            'InternalExternal',
            'Internal / External',
            $source
        );
        $context->getFields()->push($InternalExternal);
    }

}
kosala manojeewa
  • 329
  • 3
  • 11
  • please share your workout (code snippets, error logs, or any useful information) to help others answer your question. – nima Aug 12 '21 at 14:18
  • 1
    @novonimo thanks for the replay, I have updated the question with codes, and there are no any errors when do the search. – kosala manojeewa Aug 12 '21 at 14:53
  • it's now better, thank you. – nima Aug 13 '21 at 07:56
  • Educated guess: `$list = $list->filter('InternalExternal', $internalExternalParams );` filters with "AND", so it'll only show users that are CrewInternal AND CrewExternal... You might try out `$list = $list->filterAny('InternalExternal', $internalExternalParams );` to filter with OR. See https://api.silverstripe.org/4/SilverStripe/ORM/DataList.html#method_filterAny . You might need to dig into this issue with a debugger to find out what's going on... – wmk Aug 25 '21 at 06:02

0 Answers0