0

コントローラーで次のコードを使用します。しかし、data['msg'] はビュー ファイルに渡されていません。

コード:

class Operator{


public function view ($page)
{
    if ( ! file_exists('application/views/pages/'.$page.'.php'))
    {
        // Whoops, we don't have a page for that!
        show_404();
    }

    $data['title'] = $this->getTitle($page); 
    $this->load->view('templates/header', $data);
    $this->load->view('pages/'.$page, $data);
    $this->load->view('templates/footer', $data);

}
public function create_company()
{
        // some code
    $data['msg1']='my mesg';
    redirect('operator/view/operator_success','refresh');
}
};

operator_success(ページの表示) が読み込まれると、エラー メッセージが表示されます: 変数 '$msg1' が定義されていません。

4

3 に答える 3

1

が設定されているためdata['msg1']、ページがリダイレクトされます (data配列は含まれていません)。

data永続化する場合は、セッションまたはCookie使用する必要があります。

于 2012-07-18T17:31:25.007 に答える
0

リダイレクト後は、変数または配列を使用できません。代わりに変数 keep in session または CodeIgniter Flash Data を設定します。

class Operator
{

    public function view($page)
    {
        if (!file_exists('application/views/pages/' . $page . '.php')) {
            // Whoops, we don't have a page for that!
            show_404();
        }

        $data['title'] = $this->getTitle($page);
        $this->load->view('templates/header', $data);
        $this->load->view('pages/' . $page, $data);
        $this->load->view('templates/footer', $data);
    }

    public function create_company()
    {
        // some code
        $data['msg1'] = 'my mesg';

        // DO THIS 
        $this->session->set_flashdata('msg1', 'my mesg');
        // OR 
        $this->session->set_userdata('msg1', 'my mesg');
        redirect('operator/view/operator_success', 'refresh');
    }

}

リダイレクト後、単純に flashdata を呼び出すことができます。

echo $this->session->flashdata('msg1');
// OR
echo $this->session->userdata('msg1');

セッション ライブラリを自動ロードするか、手動でロードするかして、使用する前にセッションを初期化する必要があります。

[ 1 ] セッション ライブラリを自動ロードする (config/autoload.php)

$autoload['libraries'] = array('session');

[ 2 ] ライブラリを手動でロードする

$this->load->library('session');

セッションとフラッシュ データの詳細については、こちらを参照してください。これがお役に立てば幸いです。ありがとう!!

于 2012-07-18T18:04:29.800 に答える
0

変数を設定した後にリダイレクトがあるため、このメッセージをセッション (「フラッシュ」メッセージ) または operator/view/operator_success コントローラーで設定する必要があります。

于 2012-07-18T17:31:50.103 に答える