Передача переменной из одного метода контроллера в другой
Я использую платформу CodeIgniter. Я загружаю основной вид, который содержит несколько вкладок, которые загружают другие виды в <div>
через AJAX. Мой класс контроллера выглядит так:
class MainController extends MY_Controller
function main($id=0)
{
$this->load->model('main_model');
$this->data['info'] = $this->main_model->foo($id);
$this->load->view('main_view', $this->data);
}
function tab1()
{
$this->load->view('tab1_view', $this->data);
}
}
Я загружаю главную страницу по телефону mywebapp/main/123
, id
может быть использован в main
метод и в main_view
, Но когда я нажимаю на вкладку, я хочу использовать id
в <div>
в main_view
также. Какой лучший способ сделать это? Может быть, какой-нибудь способ сделать эту переменную глобальной для каждого метода в контроллере?
Я загружаю вкладку с помощью jQuery:
$("#div").load(mywebapp/tab1);
1 ответ
Решение
Использование __construct()
class MainController extends MY_Controller
protected $_id;
public function __construct()
{
$this->_id = $this->uri->segment(3);
}
function main()
{
$this->load->model('main_model');
$this->data['info'] = $this->main_model->foo($this->_id);
$this->load->view('main_view', $this->data);
}
function tab1()
{
//available here too
echo $this->_id;
$this->load->view('tab1_view', $this->data);
}
}
Или вы можете изменить это, чтобы использовать: $this->uri->uri_to_assoc(n)
которые являются ключевыми парами значений после /method/controller/key/value/key2/value2
Пример:
/user/search/name/joe/location/UK/gender/male
[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)