0

ファイルのアップロードに使用したのと同じページにユーザーをリダイレクトして、ファイルのアップロード中に発生したエラーを表示したいと思います。重要なのは、そのページにいくつかの入力を事前に入力しているためredirect(controller/method_to_load_page)、データの入力が実行されないため、使用できません。

使用も機能し$this->load->view('add_page',$error);ません(私が使用している方法)。これは、エラーは表示されますが、事前入力されたデータを含む入力フィールドは表示されないためです。

これは、ファイルと他のフィールドをアップロードするためにフォームをロードする私のコントローラーのメソッドです。

public function add_products_page()
    {
        //get each categories subcategory and place them in their own variable
        $data['categories1'] = $this->admin_model->getSubcategories('1');
        $data['error'] = '';
        $this->load->view('add_page',$data);
    }

そして、そのページから、ユーザーはフォームに入力して画像を選択できます。次に、フォームは同じコントローラーでこのメソッドに送信されます。

public function add_book()
    {
        $id = $this->admin_model->add_book();

        $config['file_name'] = $id;
        $config['upload_path'] = './images/';
        $config['allowed_types'] = 'jpg';

        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('add_page', $error);
        }
        else
        {
            redirect('admin/add_products_page', 'refresh');
        }
    }

エラーがない場合は、add_products_page()メソッドへのリダイレクトは問題ありませんが、エラーが発生した場合は、ビュー'add_page'が読み込まれ、エラーが表示されますが、それは呼ばれていません。

したがって、メソッドadd_products_pageを呼び出して入力フィールドにデータを入力することでビューをロードする方法と、エラーが発生したときにエラーを表示する方法の両方を知りたいと思います。誰か助けていただければ幸いです。

4

1 に答える 1

0

別のメソッドに投稿してからリダイレクトするのはなぜですか? すべて同じ方法で処理できます。

public function add_products_page()
{
    if ($this->input->server('REQUEST_METHOD') == 'POST')
    {
        $result = $this->_add_book();
        if ($result['is_error'])
        {
            // TODO: whatever it takes to show an error message
            $data['error'] = $result['message'];
        }
        else
        {
            // TODO: whatever it takes to show a success message
            $data['error'] = '';
        }
    }

    //get each categories subcategory and place them in their own variable
    $data['categories1'] = $this->admin_model->getSubcategories('1');
    $this->load->view('add_page',$data);
}

public function _add_book() // add underscore so it's not directly accessible
{
    $result = array(
        'is_error' => TRUE,
        'message' => '',
    );

    $id = $this->admin_model->add_book();

    $config['file_name'] = $id;
    $config['upload_path'] = './images/';
    $config['allowed_types'] = 'jpg';

    $this->load->library('upload', $config);

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());

        // set an error message
        $result['message'] = $error;
    }
    else
    {
        // set a success message
        $result['is_error'] = FALSE;
        $result['message'] = 'SOME SUCCESS MSG';
    }

    return $result;
}
于 2013-02-27T20:32:04.370 に答える