0

Single_column という名前のライブラリを読み込もうとしています。このライブラリを作成し、ライブラリ フォルダーに設定します。この時点で、コード Igniter フレームワークを使用していることに言及する必要があります。Sinle_column クラスには、次のコードが含まれています。

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Single_column
{
    public function render( $id )
    {
        $CI =& get_instance();

        // DB calls
        // search for uri in db
        $CI->load->model('m_single_column');
        $image = $CI->m_single_column->getImageURI( $id );
        $text = $CI->m_single_column->getText( $id );

        // ==== HEADER
        // eventually, this will be loaded from the db
        $header_data['title'] = "Single Column Demo";
        $header_data['css'][] = "single_column";
        $CI->load->view('v_header', $header_data);

        // ==== CONTENT
        $content_data['content'] = '<div class="content-block">';
        $content_data['content'] .= '<div class="image">';
        $content_data['content'] .= '<img src="' . base_url() . $image . '" width="200" height="133" alt="my tractor"/>';
        $content_data['content'] .= '</div>';
        $content_data['content'] .= $text;
        $content_data['content'] .= '</div><!-- end content-block-->';

        $CI->load->view('v_content', $content_data);

        // ==== FOOTER
        $CI->load->view('v_footer');
    }
  }

 ?>

コントローラーフォルダーに、次の名前のクラスがあります。

 <?php

 if (!defined('BASEPATH'))
    exit('No direct script access allowed');

 class Master extends CI_Controller {

    function __construct() {
       parent::__construct();

     }

public function _remap($method) {
    // remap overrides function calls 
    // search for uri in db

    $this->load->model('m_master');

    $uri_id = $this->m_master->findURI(uri_string());
    $page;
    if ($uri_id != false) {       
        $this->{$page->controller}->render( $page->id );
    } else {
        show_404(uri_string());
    }
}

}

?>

前述のコードはチュートリアルからのもので、私の問題は次の行にあります。

  $this->{$page->controller}->render( $page->id );

表示されるエラーは次のとおりです。

   Fatal error: Cannot access empty property in C:\xampp\htdocs\PhpProject1\application\controllers\master.php on line 24

実はrenderというメソッドを認識できないことに気づきました。それで、次のコード行を if ステートメントに入れてみました

  $library= Single_column::$uri_id['id'];;
  $this->load->library($library);

しかし、次のエラーを受け取りました: Fatal error: Class 'Single_column' not found in C:\xampp\htdocs\PhpProject1\application\controllers\master.php on line 22

さらに、$uri_id は sql オブジェクトを返します。でもオブジェクトのid属性だけ渡したい。

質問: ライブラリを呼び出すにはどうすればよいですか? クラスのメソッド(renderメソッド)に値を渡すにはどうすればよいですか? 前述の行が機能しなかったのはなぜですか?

4

1 に答える 1

1

モデルをライブラリにロードする理由がわかりません。

ライブラリが次の場所にも保存されていることを確認してくださいapplication/libraries

$this->load->library('your_library_name');
$this->your_library_name->render($page->id);

これは、CodeIgniter ライブラリのロードに似ています。

于 2012-11-25T23:36:07.267 に答える