<?php namespace App\Models;
use CodeIgniter\Model;
class BaseModel extends Model
{
/**
* Produces array to generate form elements easily, eg. SELECT elements (key/id => value pairs), RADIO or CHECKBOX iterations
*
* @param string $field # Which field to use as value (primary key is used as key)
* @param bool $addHeader # Add a first array element with empty key and a '__Please select' value
* @param string $headerText # custom header text (if you do not want to use the custom '__Please select)
* @return array
*/
public function dropdown(string $field, bool $addHeader=TRUE, string $headerText=null)
{
$fieldnames = $this->getFieldNames($this->table); // array
if(!isset($field) || !in_array($field, $fieldnames))
throw new \Exception("The field `".$field."` does not exist in table `".$this->table."`");
$types = $this->select($this->primaryKey, $field)->asArray()->findAll();
$keys = array_column($types, $this->primaryKey);
$values = array_column($types, $field);
// Add empty row ad beginning
if($addHeader===TRUE)
{
array_unshift($keys, '');
$headerText = (is_null($headerText)) ? '__Please select...' : '__'.$headerText;
array_unshift($values, $headerText);
}
return array_combine($keys, $values);
}
}