Here is a snippet of my code:
<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
class sample{
function __construct() {
$this->ci = & get_instance();
}
public $name;
public $style;
function set_data($data)
{
/* List of parameters that you can set */
$this->name = (isset($data['name']) ? $data['name']: ''); // Set select name
$this->style = (isset($data['style']) ? $data['style']: ''); // Set select style
}
function select_both_dropdown()
{
$select = '<select name="'.$this->name.'" class="chzn-select" style="'.$this->style.'">';
$select .= '<option value=""></option>';
$select .= '</select>';
return $select;
}
Controller:
$data['select'] = $this->sample->select_both_dropdown(array(
'name' => 'eventselect',
'style' => 'min-width: 247px;'
));
How it is being loaded in controller: function _construct() { parent::_construct(); $this->load->library('tank_auth'); $this->load->library('sample'); }
When the select loads on the screen, nothing is filled in. No name, no style etc.. What am I doing wrong?
You need to reference them properly;
In the library;
// as you have done
$this->select = 'foo';
In your controller it would be something like $this->sample->name
or $this->sample->style
But the $select is not an attribute or being returned so will not be avaiable.
UPDATE - based on comments controller;
$this->sample->set_data(array(
'name' => 'eventselect',
'style' => 'min-width: 247px;'
));
$data['select'] = $this->sample->select_both_dropdown();
ANOTHER UPDATE:
function select_both_dropdown($data)
{
$this->set_data($data);
$select = '<select name="'.$this->name.'" class="chzn-select" style="'.$this->style.'">';
$select .= '<option value=""></option>';
$select .= '</select>';
return $select;
}
I would then change set_data() to private instead of public.