Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Archive

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, biapar, Willr, Ingo, simon_w

ComplexTableField and Search


Reply

3 Posts   1342 Views

Avatar
adesweb

11 September 2008 at 9:57pm Community Member, 39 Posts

Anyone have experience of adding a search box on top of a complexTableField, so you can search within the table?

I have tried using the code for MemberTableField to do it, but keep running into issues.

Any help would be gratefully received,

This is what I have so far:

/**
* Extends a ComplexTableField by adding a search box to search within the table
*
*/

class SearchComplexTableField extends ComplexTableField {
   
   /**
    * Template for main rendering
    *
    * @var string
    */
   protected $template = "SearchComplexTableField";

   function __construct($controller, $name, $sourceClass, $fieldList, $detailFormFields = null, $sourceFilter = "", $sourceSort = "", $sourceJoin = "") {
      parent::__construct($controller, $name, $sourceClass, $fieldList, $detailFormFields, $sourceFilter, $sourceSort, $sourceJoin);
      
      // search
      $SQL_search = isset($_REQUEST['TableSearch']) ? Convert::raw2sql($_REQUEST['TableSearch']) : null;
      if(!empty($_REQUEST['TableSearch'])) {
         $searchFilters = array();
         foreach($fieldList as $fieldName => $fieldSpec) {
            $searchFilters[] = "`$fieldName` LIKE '%{$SQL_search}%'";
         }
         $this->sourceFilter[] = '(' . implode(' OR ', $searchFilters) . ')';
         
      }
   }
   
   function SearchForm() {
      $searchFields = new FieldGroup(
         new TextField('TableSearch', _t('TableField.SEARCH', 'Search'))
      );

      $actionFields = new LiteralField('ComplexTableFilterButton','<input type="submit" class="action" name="ComplexTableFilterButton" value="'._t('SearchComplexTableField.FILTER', 'Filter').'" id="ComplexTableFilterButton"/>');

      $fieldContainer = new FieldGroup(
            $searchFields,
            $actionFields
      );

      return $fieldContainer->FieldHolder();
   }

}

I get an error about missing Action.

Can someone point me in the right direction,

Thanks,

Adrian

Avatar
adesweb

12 September 2008 at 9:26pm Community Member, 39 Posts

I have since managed to get this working. If anyone needs the solution, let me know.

Adrian

Avatar
Fuzz10

12 September 2008 at 9:53pm Community Member, 787 Posts

Hi Adrian,

Would you mind posting the solution ?