0

こんにちは、私はブログを作成しようとしています。最初のホームページは問題ありません。データベースから短い説明とカテゴリを取得していますが、リンクに問題があります。

これは私のコントローラ機能です:

public function index()
    {
        $this->load->model('Model_cats');
        $data['posts'] = $this->Model_cats->getLivePosts(10); 
        $data['cats'] = $this->Model_cats->getTopCategories(); 
        $data['title'] = 'Welcome to Paul Harbuz Blog Spot!';
        $data['main'] = 'public_home';
        $this->load->vars($data);
        $this->load->view('template', $data);
    }

    public function category($id)
    {
        $data['category'] = $this->Model_cats->getCategory($id);
        $data['posts'] = $this->Model_cats->getAllPostsByCategory($id);
        $data['cats'] = $this->Model_cats->getTopCategories();
        $data['title'] = $data['category']['name'];
        $data['main'] = 'public_home';
        $this->load->vars($data);
        $this->load->view('template', $data);
    }
    public function post($id)
    {
        $data['post'] = $this->Model_cats->getPost($id);
        $data['comments'] = $this->Model_cats->getComments($id);
        $data['cats'] = $this->Model_cats->getTopCategories();
        $data['title'] = $data['post']['title'];
        $data['main'] = 'public_post';
        $this->load->vars($data);
        $this->load->view('template');
    }

これは私のモデル関数です:

function getTopCategories()
    {
        $this->db->where('parentid',0);
        $query = $this->db->get('categories');
        $data = array();

        if ($query->num_rows() > 0)
        {
            foreach ($query->result_array() as $row)
            {
                $data[$row['id']] = $row['name'];
            }
        }

        $query->free_result();
        return $data;
    }

    function getLivePosts($limit)
    {
        $data = array();

        $this->db->limit($limit);
        $this->db->where('status', 'published');
        $this->db->order_by('pubdate', 'desc');
        $query = $this->db->get('posts');

        if($query->num_rows() > 0)
        {
            foreach($query->result_array() as $row)
            {
                $data[] = $row;
            }
        }

        $query->free_result();
        return $data;
    }

    function getCategory($id)
    {
        $data = array();
        $this->db->where('id',$id);
        $this->db->limit(1);
        $query = $this->db->get('categories');

        if($query->num_rows() > 0)
        {
            $data = $query->row_array();
        }

        $query->free_result();
        return $data;
    }

    function getAllPostsByCategory($catid)
    {
        $data = array();
        $this->db->where('category_id', $catid);
        $this->db->where('status', 'published');
        $query = $this->db->get('posts');

        if($query->num_rows() > 0)
        {
            foreach($query->result_array() as $row){
                $data[] = $row;
            }
        }
        $query->free_result();
        return $data;
    }

    function getPost($id)
    {
        $data = array();
        $this->db->where('id',$id);
        $this->db->limit(1);
        $query = $this->db->get('posts');

        if ($query->num_rows() > 0)
        {
            $data = $query->row_array();
        }

        $query->free_result();
        return $data;
    }

ビューページには次のようなものがあります:

if ( count($posts) )
    {
        foreach ($posts as $key => $list)
        {
        echo '<h2>'.$list['title'].'</h2>';
        echo auto_typography(word_limiter($list['body'], 200));
        echo anchor('post/'.$list['id'],'read more >>');
        }

        echo '<br/><br/>';
    }

URLで投稿IDを取得していますが..ページが見つからない理由がわかりません。

4

1 に答える 1

3

コントローラ名をアンカーURIセグメントに追加する必要があります。

echo anchor('CONTROLLER/post/'.$list['id'],'read more >>');

このトピックの詳細については、CodeIgniterURLのドキュメントをご覧ください。

次のようなURLが必要な場合は、ファイルhttp://example.com/post/123に次を追加する必要があります。application/config/routes.php

$route['post/(:num)'] = "CONTROLLER/post/$1";

ルーティングの詳細については、ドキュメントを参照してください。

于 2013-02-13T19:07:34.253 に答える