我有一个简单的控制面板控制器,它负责扩展后端控制器以及为登录用户构建控制面板仪表板。根据登录用户的角色,有两种可能的仪表板可供加载。如果用户的角色为 4,则加载管理仪表板,如果是其他任何内容,则加载常规用户仪表板。如果您在下面注意到它会从$user_data
名为 role_id 的对象中请求一个属性。此对象在后端控制器中设置。我这样做是因为我的大多数控制器都使用了这个对象。
当我加载控制面板控制器时,我收到一个未定义的变量$user_data
,并试图获取非对象的属性。我可以不设置后端控制器内部的变量并像我一样在控制面板中使用它吗?
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Control_panel extends Backend_Controller
{
/**
* Control_panel::__construct()
*
* Load the parent construct and any additional models, helper, libraries available.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Control_panel::index()
*
* Loads the dashboard that pertains to user's role
* @return void
*/
public function index()
{
$this->template
->title('Control Panel');
if ($user_data->role_id == 4)
{
$this->template
->build('admin_dashboard_view');
}
else
{
$this->template
->build('user_dashboard_view');
}
}
}
后端控制器
$user_data = $this->user->get_by('user_id', $this->session->userdata('user_id'));
$character_data = $this->character->get_many_by('owned_by', $this->session->userdata
('user_id'));
$user_data->characters = $character_data;
$this->template
->set_theme('smashing')
->set_layout('control_panel_view')
->set_partial('header', 'partials/header')
->set_partial('sidebar','partials/sidebar')
->set_partial('footer', 'partials/footer')
->set('user_data', $user_data);