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 に答える