0

到目前为止,我正试图收紧我的代码并停止重复自己。一直在挣扎,哈哈

在我的视图和控制器中,我正在检查用户是否已登录。这很好,但我只想检查用户是否在视图中,然后显示正确的内容。

最初,在我的控制器中,我查看用户是否在那里,然后如果是,我使用不同的变量加载相同的视图。好像有点重复。

public function recentStories(){
//This pulls back all the recent stories
    if (empty($this->user)) {
        $this->load->view('header_view', array(
        'title' => 'Recent Stories',
        ));
        $this->load->view('storyList_view', array(
        'query' => $this->data_model->pullAllStories(),
    )); 
        $this->load->view('footer_view');
    }else{
        $this->load->view('header_view',array(
            'user' => $this->users_model->getUser($this->user->user_id),
            'title' => 'Recent Stories',
        ));
        $this->load->view('storyList_view', array(
            'query' => $this->data_model->pullAllStories(),
            'admin' => $this->admin_model->pulladminRecent(),
            'user' => $this->users_model->getUser($this->user->user_id),
        )); 
        $this->load->view('footer_view');
    }
}

最终,我想把那个块减少到这样的东西。

public function recentStories(){
//This pulls back all the recent stories
    $this->load->view('header_view',array(
        'title' => 'Recent Stories',
    ));
        $this->load->view('storyList_view', array(
            'query' => $this->data_model->pullAllStories(),
            'admin' => $this->admin_model->pulladminRecent(),
            'user' => $this->users_model->getUser($this->user->user_id),
        )); 
        $this->load->view('footer_view');
}

但是当我减少该代码并取出检查用户的部分时,我得到一个错误,说我正在尝试获取非对象的属性。显然,这是在谈论用户。

为了尝试解决这个问题,我两种都试过了

<?if(isset($user)){
  user header code in here
}else{
  non-user header code in here
}?>

<?if(!empty($user)){
  user header code in here
}else{
  non-user header code in here
}?>

两者都返回了“试图获得非对象的财产”任何想法都会受到欢迎。我真的不喜欢有多余的代码。

4

1 回答 1

1
public function recentStories(){
    // default values
    $header_data = array('title' => 'Recent Stories');
    $storyList_data = array('query' => $this->data_model->pullAllStories());

    // extended data for logged user
    if (!empty($this->user)) {
        $header_data['user'] = $this->users_model->getUser($this->user->user_id);
        $storyList_data['admin'] = $this->admin_model->pulladminRecent();
        $storyList_data['user'] = $this->users_model->getUser($this->user->user_id);
    }

    // load your views
    $this->load->view('header_view', $header_data);
    $this->load->view('storyList_view', $storyList_data);
    $this->load->view('footer_view');
}

然后在您的视图中检查“if (isset($user)) {”等。

于 2013-06-02T21:32:33.877 回答