0

私はCIの初心者です。メインコントローラーとしてMY_Controller.phpを使用しました。div#pageローダーとしてajaxを開くことができます。さて、私の問題は、/ aboutページをロードしても、サービスモデルのデータベースエントリを取得することです。アバウトコントローラーのアバウトテーブルを取得するにはどうすればよいですか?

..
    function render_page($view) {
        if( ! $this->input->is_ajax_request() )
        {
          $this->load->view('templates/header', $this->data);
        }
        $this->load->view($view, $this->data);

        if( ! $this->input->is_ajax_request() )
        {
         $this->load->view('templates/menu');
         $this->load->view('templates/footer', $this->data);
        }
      }..

私のservices_model:

class Services_model extends CI_Model {

    function getAll() {
        $q = $this->db->get('services');
        if($q->num_rows() > 0){
        foreach ($q->result() as $row)
        {
            $data[] = $row;

            }
        return $data;
    }
    }
}

私のホームコントローラー:

public function view($page = 'home')
{
$this->load->helper('text');
$this->data['records']= $this->services_model->getAll();
if ( ! file_exists('application/views/pages/'.$page.'.php'))
{
    // Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
$this->render_page('pages/'.$page,$data);
}

ホームビューでそれらを使用すると、問題はありません。services_tableを見ることができます。

<ul class="blog-medium">
<?php foreach($records as $row): ?>
<li>    
<div class="blog-medium-text">
<h1><a href="./post.html"><?php echo $row->title; ?></a></h1>
<p class="blog-medium-excerpt"><?php  echo $row->content; ?><br />
<a href="./post.html" class="read_more">Devamını Okumak için &rarr;</a></p>
</div>
<?php endforeach ?>

アバウトページでも同じように使いたいです。About_model:

class About_model extends CI_Model {
    function getAll() {
        $q = $this->db->get('abouts');
        if($q->num_rows() > 0){
        foreach ($q->result() as $row)
        {
            $data[] = $row;

            }
        return $data;
    }
    }
}

コントローラーについて:

 public function view($page = 'about')
    {
    $this->load->helper('text');
    $this->data['records']= $this->about_model->getAll();
    if ( ! file_exists('application/views/pages/'.$page.'.php'))
    {
        // Whoops, we don't have a page for that!
    show_404();
    }
    $data['title'] = ucfirst($page); // Capitalize the first letter
    $this->render_page('pages/'.$page,$data);
    }

そして、これは約の私のビューファイルです:

<div id="content">
<?php foreach($infos as $row): ?>
<h3 style="text-align: center;"> <?php echo $row->title; ?></h3>
<div class="hr">    </div>
<?php echo $row->content; ?>
<?php endforeach; ?>

エラーが発生しました:

Severity: Notice
Message: Undefined variable: infos
Filename: pages/about.php
Line Number: 3

アバウトテーブルを取得できないのはなぜですか?

4

1 に答える 1

2

で変数を呼び出していますが$infosforeach変数としてビューに渡されることはありません。

ビューへの動的データの追加に関するドキュメントを読む

あなたは何かに設定$data['infos']する必要があるでしょう、または私はあなたが意図したものを推測しています、あなたの中で使用$recordsするforeach

上記はあなたの特定の答えですが、あなたがあなたのソースにリポジトリを提供した後、あなたが苦労している問題があります。はじめに:はじめに、チュートリアル、そして一般的なトピックに進んで、ドキュメント全体を読むことを強くお勧めします。

ここで問題が発生する理由は、routes.phpを設定して、すべてがメソッドHomeを実行するコントローラーにルーティングされるようにするためです。viewこのメソッドは、表示したいページを受け入れますが、常にサービスモデルのフェッチを返します。他のコントローラーはまったく実行されていません。コントローラの設定に基づいて、カスタムルートを削除するだけの場合はhttp://theurl/about、コントローラにルーティングしAboutます。ロードされるデフォルトのメソッドはindex、ビューをインデックスに変更すると、デフォルトで表示されるようにするためです。

于 2012-08-05T18:05:51.857 に答える