Ejemplo n.º 1
0
 public function __invoke(Field $field)
 {
     if (!$field->isType('reference')) {
         throw new Exception('The FilterReferenceAsText template can only be used on DB reference fields.');
     }
     $reference = $field->getOptionPairsReference();
     $titleColumn = $field->getOptionPairs()->detectTitleColumn();
     $field->assignHelperCallback('SelectFilter.FilterType', function () {
         return ['type' => 'text', 'options' => []];
     })->assignHelperCallback('SelectFilter.SelectModifier', function ($helper, Select $select, $conditionSetName, $queryVars) use($reference, $titleColumn) {
         $filter = new TextFilter($reference['table'], $titleColumn);
         return $filter->apply($select, $conditionSetName, $queryVars);
     });
 }
Ejemplo n.º 2
0
 /**
  * Provide a default sorting strategy for reference columns.
  *
  * @param DbField $field
  * @param Select $select
  * @param string $direction
  * @return Select
  * @throws Select\SelectException
  */
 public function sortDbReference(DbField $field, Select $select, $direction)
 {
     $optionPairs = $field->getOptionPairs();
     $tableName = $optionPairs->getTableName();
     try {
         $titleColumn = $optionPairs->detectTitleColumn();
     } catch (TitleColumnNotDetectedException $e) {
         $titleColumn = $field->getName();
     }
     if ($titleColumn instanceof Expr) {
         $orderSpec = "{$titleColumn} {$direction}";
     } else {
         $orderSpec = new Expr("{$select->quoteWithAlias($tableName, $titleColumn)} {$direction}");
     }
     return $select->order($orderSpec);
 }
Ejemplo n.º 3
0
 /**
  * Use a \Dewdrop\Db\Field object to render the select tag.  The OptionPairs
  * API will be used to retrieve the actual options allowed for this control.
  *
  * @param Field $field
  * @return string
  */
 public function directField(Field $field)
 {
     return $this->directArray(array('name' => $field->getControlName(), 'id' => $field->getHtmlId(), 'options' => $field->getOptionPairs()->fetch(), 'value' => $field->getValue()));
 }
Ejemplo n.º 4
0
 protected function handleDbReference(DbField $field, $type)
 {
     return function () use($field, $type) {
         return array('type' => $type, 'options' => array('options' => $field->getOptionPairs()->fetchJsonWrapper()));
     };
 }