Ну, самое простое решение - просто загрузить другое представление ...
Что касается модели, то это будет выглядеть так:
class UserModel extends Model {
public function getUserCredit($id) {
$this->load->database();
//effectively generates: SELECT `credit` FROM `User_profiles` WHERE `id`=$id
$query = this->db->select('credit')->where('id',$id)->get('User_profiles');
//row() executes the query for a single result, returns the credit property
return $query->row()->credit;
}
}
Тогда в контроллере:
class Users extends Controller {
//....
public function credit() {
$this->load->model('userModel','users');
// assuming the session library has been loaded
$user_id = $this->session->userdata('id');
$credit = $this->users->getUserCredit($user_id);
if ($credit == '0') $this->load->view('users/no_credit');
else $this->load->view('users/credit');
}
}
Это не проверено, но это должно, по крайней мере, помочь вам понять идею.
Когда вы запрашиваете страницу /users/credit/1
, CI вызывает действие Users::credit(1)
.
Затем загружается UserModel
как $this->users
Вы звоните $this->users->getUserCredit(1)
, что переводится как UserModel::getUserCredit(1)
, для хранения как $credit
Модель загружает базу данных.
Вы указываете БД на select('credit')
(выберите столбец credit
), where('id',1)
(где id = 1
), затем get('User_profiles')
(получите соответствующие строки из таблицы User_profiles
). Это возвращает запрос, который вы сохраняете как $query
для удобства чтения.
getUserCredit
возвращает свойство кредита для однострочного результата запроса
Если $credit == 0
, вы загружаете представление views/users/no_credit.php
В противном случае вы загружаете представление views/users/credit.php
(принято называть представления в соответствии с действиями, которые они представляют, и помещать их в папку, соответствующую контроллеру)