Skip to content

Latest commit

 

History

History
65 lines (54 loc) · 1.53 KB

SelectOptions.md

File metadata and controls

65 lines (54 loc) · 1.53 KB

Logikos\Forms\SelectOptions Usage

Add to Dependency Injector

$di = new Phalcon\Di();

$di->set('selectOptions',function($modelname,$options=null) {
  $e = new EventsManager;
  $s = new SelectOptions($modelname,$options);
  $s->setEventsManager($e);
  return $s;
});

Phalcon\Di::setDefault($di);

Optional method in BaseModel for easy access

class BaseModel extends Phalcon\Mvc\Model {
  public static function getSelectOptions($options=null) {
    
    $selectoptions = Phalcon\Di::getDefault()->get(
        'selectOptions',
        [static::class,$options]
    );
    
    if (defined(static::class.'::ID_COLUMN'))
      $selectoptions->setIdColumn(static::ID_COLUMN);
    
    if (defined(static::class.'::TEXT_COLUMN'))
      $selectoptions->setTextColumn(static::TEXT_COLUMN);
    
    return $selectoptions;
  }
}

Use BaseModel Method from controller or anywhere

public function robotOptionsAction() {
  /* @var $selectoptions \Logikos\Forms\SelectOptions */
  $request = new Phalcon\Http\Request();
  $selectoptions = Robots::getSelectOptions();
  
  $selectoptions
    ->options($request->get())   // good for select2 serverside, ex: ?search=Terminator
    ->setIdColumn('id')
    ->setTextColumn('name')
    ->addSelect([
      'price',
      'year'
    ])
    ->addConditions(
        "type = :type:",
        [
            'type' => 'mechanical',
        ]
    );
  $result = $selectoptions->result();
  
  $response = new Phalcon\Http\Response();
  $response->setJsonContent($result);
  $response->send();
}