2011-10-28 4 views
0

Codeigniterを使用してViewページに含めるには、Controllerから関数を呼び出す必要があります。通常、私は任意のページを開くとき、私はこのページを開くためにコントローラで$ this-> load-> view()を呼び出します。今私は、メインページにサブページを含めるが、それはビュー内の任意の機能を含めることはできません。私はこのような機能を組み込もうとしています。CodeigniterでViewページに含めるためにControllerから関数を呼び出す方法は?

<body><? include(site_url().'/login'); ?></body> 

<body><? include('/login'); ?></body> 

<body><? include('./login'); ?></body> 

私はこのリンクhttp://localhost/ci_house/index.php/loginでページを開くことができます。私のコードを実行するためにメインページを開くと、これらのエラーが表示されます。

A PHP Error was encountered 

Severity: Warning 

Message: include(http://localhost/ci_house/index.php/login) [function.include]: failed to open stream: no suitable wrapper could be found 

Filename: views/main.php 

Line Number: 8 
A PHP Error was encountered 

Severity: Warning 

Message: include() [function.include]: Failed opening 'http://localhost/ci_house/index.php/login' for inclusion (include_path='.;C:\php5\pear') 

Filename: views/main.php 

Line Number: 8 

2つのビューを1ページに表示したい。ビュー/ main.phpで

function test1() 
{ $data['var_for_login_view'] = 'get table1'; 
    $this->load->view('main1',$data); 
} 
function test2() 
{ $data['var_for_login_view'] = 'get table2'; 
    $this->load->view('main2',$data); 
} 

私は

<body> 
include('main1.php'); 
include('main2.php'); 
</body> 

のように見せたい

$this->load->view('test1'); 
$this->load->view('test2');` 

が、私はCodeIgniterの中で次のように表示することができます。

+0

ビューから別のビューを挿入しますか? – Vikk

+0

はい、**例** 'function sh_all_post() { $ this-> load-> model( 'post_model'、 'post'); $ data ['qry_post'] = $ this-> post-> get_all_post(); $ this-> load-> view( 'sh_all_post_view'、$ data); } \tパブリック関数main() \t {\t \tの$ this - >荷重 - >ビュー( '主')。 \t} これらの機能をインデックスページにのみ表示するには、この機能を含める必要があります。インデックスページを開くと、インデックスページのこれらの機能からページを表示する必要があります。 – user572575

答えて

0

私が理解していることは、コントローラの1つで定義されているいくつかの機能があり、別のコントローラ/ビューからこれらの機能を呼び出せるようにすることです。

これが正しければ、通常これを行うことはできません。

  1. これらの機能をライブラリ/ヘルパーに移動します。ライブラリ/ヘルパーをロードして、これらの関数を呼び出すことができます。

  2. これらの機能をコントローラから絶対に呼び出す必要がある場合は、HMVC extensionを調べることができます。

0

サイトURLを使用することはできません。この$ this-> load-> view( 'template'、$ data)を使用してください。 codeigniterのために。 main.phpで

1

私は本当によくあなたの質問を理解することはできませんが、ちょっと、あなたは問題のない別のビュー内の任意のビュー「を含める」ことができます。..

$this->load->view('login'); 

あなたドン」パラメタを渡す必要がある場合もあります。バッファに入れられているので、挿入する子ビューにも利用できます。しかし、実際に必要なものをもっと明確にしてください。

login()メソッドでロードするのと同じビューをmain()に含める場合は、もちろんCI URIを含める必要はなく、コントローラのメソッド内で渡す必要のある変数を作成するだけですlogin()を呼び出して、この特定のメソッドまたは他のコントローラのメソッド用に設計されたビューであれば、必要なビューを呼び出すことができます。

だから、for.ex.

function login() 
{ 
    $data['var_for_login_view'] = 'a variable'; 
    $data['var_for_this_view'] = 'another variable'; 
    $this->load->view('main'); 
} 

ビュー/メイン。PHP:

echo $var_for_this_view; 
$this->load->view('login'); 
echo $var_for_login_view; 

// see? $data was not passed to $this->load->view('login'), but it's still there nonetheless!