2

基本的に、学校のプロジェクトの簡単なブログにCodeIgniterを使用する2つのコントローラーがあります。1つはログインページであるホームです。もう1つは、サインイン時のメンバーです。このメンバーコントローラーでは、add_post()、view_users_posts()などの関数を作成しています。Member.php

class Member extends CI_Controller{

function __construct(){
    parent::__construct();
    $is_logged_in = $this->session->userdata('is_logged_in');
    if (!isset($is_logged_in) || $is_logged_in !== true) {
        redirect('home');
    }
}

public function index() {
    $this->load->library('pagination');

    $config['base_url'] = base_url() . 'index.php/member/index/';
    $config['total_rows'] = $this->db->get('posts')->num_rows();
    $config['per_page'] = 5;
    $config['num_links'] = 20;

    $this->pagination->initialize($config);

    $data['posts'] = $this->posts_model->get_all_posts($config['per_page'], $this->uri->segment(3));
    $this->load->view('member_view', $data);
}

public function add_post() {
    $this->load->view('add_post_view');
}

私のメンバービューには、次のようなこれらの関数へのリンクを含むナビゲーションメニューがあります:member_view.php

      <li><a href="member">Home</a></li>
      <li><a href="member/add_post">Add Post</a></li>
      <li><a href="member/view_users_posts">My Posts</a></li>
      <li><a href="member/reset_pass">Reset Password</a></li>
      <li><a href="member/logout">Logout</a></li>

何をコーディングすればよいかわからないので、まだ完成していません。基本的に、ユーザーが[投稿の追加]をクリックした場合、add_postというビューをロードするコントローラーの関数add_postを参照する必要がありますか?または、ビューをロードするAdd_postという新しいコントローラーに転送する必要がありますか?

私の理由は、[投稿を追加]をクリックすると、member / add_postに移動しますが、ホームに戻ると、メンバー/メンバーを取得してから、もう一度投稿を追加すると、member / member/add_postを取得します。

私はこれが理にかなっていることを願っています、私は完全に途方に暮れています。助けてくれてありがとう!

4

3 に答える 3

4

を使用する必要がありますbase url

ベースURLを(構成内で)サポートします。www.example.com/

その後、あなたのコードは

<li><a href="<?php echo base_url('member/add_post');?>">Add Post</a></li>

他のアイテムについても同じようにします。

注:構成ファイルのスラッシュを忘れないでください。それ以外の場合はbase_url('/member/add_post')

参照

于 2012-05-17T08:26:20.453 に答える
0

あなたは正しい方向に進んでいます。使用しているメニュー項目については、次のコントローラー機能を完了する必要があります。

class Member extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $is_logged_in = $this->session->userdata('is_logged_in');
        if (!isset($is_logged_in) || $is_logged_in !== true) {
            redirect('home');
    }

    function add_post()
    {
        // for example:
        $this->load->view('header');  // standard header and menu view
        $this->load->view('add_post');  // input form view
        $this->load->view('footer');   // standard footer, adverts, etc.
    }

    function view_users_posts()
    {
        $data ['posts'] = $this->model->get_all_posts( ...(etc)... );
        $this->load->view('header');  // standard header and menu view
        $this->load->view('view_users_posts', $data);
        $this->load->view('footer');   // standard footer, adverts, etc.
    }

    function reset_pass()
    {
        ...
    }

    function logout()
    {
        ...
    }
}

最初の新しい関数は、、、およびを参照views/header.phpviews/add_post.phpますviews/footer.php。他の「メンバー」関数もおそらくヘッダーとフッターをロードする必要がありますが(一貫したサイトの外観のため)、おそらく関数に非常によく似たものと呼ばれる、異なる本体の機能をロードします。

view_users_posts()投稿を取得するためにいくつかの新しいモデル関数にアクセスし、それをビューに渡して適切にフォーマットすることを想定しています。上記の方法に基づいてview/view_users_posts.php変数にアクセスする必要があることに注意してください。$posts

于 2012-05-17T08:28:50.287 に答える
0

少し前に私は同じ問題を抱えていました。私の解決策は、ベースURLをindex.phpへのパスに設定することでした。例えば

$config['base_url'] = "http://localhost/codeigniter/index.php/"

こんな感じで使えます

<a href="<?php echo base_url() ?>Controller/Action/Param1/Param2">Link Text</a>
于 2012-05-17T11:35:42.193 に答える