0

以下のコードは画像をフォルダーに入れ続けますが、フォルダーassets/images/photoAlbumsに入れるべきだと思いますassets/images/photoAlbums/$album

ページを最初にロードすると、URL が で表示され、controller/addPhoto/TestingaddPhoto ビューには、ユーザーがファイルを選択して [送信] をクリックするフォームが表示されます。この同じコントローラー関数 addPhoto に送信します。ページを送信するときのみTesting、URL にセグメントがなくなり、それが にアップロードし続ける理由assets/images/photoAlbumsです。

ビューを再度ロードするときにセグメントを渡すだけでよいと思いますが、ビューをロードするときにセグメントを渡す方法がわかりません。

/**
    * addPhoto - function which shows the add photo page
    */
    function addPhoto()
    {   
        $album = $this->uri->segment(3);

        $config['upload_path'] = './assets/images/photoAlbums/'.$album.'/';
        $config['allowed_types'] = 'jpg|jpeg|pjpeg';
        $config['max_size'] = '2048';   // that's 2MBs
        $config['max_width'] = '1200';
        $config['max_height'] = '1200';
        $config['remove_space'] = TRUE;
        $config['overwrite'] = TRUE;

        echo "album = ".$album;
        echo "config = ".$config['upload_path'];

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

        if(!$this->upload->do_upload('userFile')) { // if there are errors...
            //echo "fail";
            $content_data['error'] = array('error' => $this->upload->display_errors());
            $content_data['data'] = array('upload_data'=>$this->upload->data());
            $content_data['title'] = ' | Rochester Water Ski Show Team';
            $content_data['firstName'] = $this->session->userdata('firstName');
            $data['sess'] = $this->session;
            $data['content'] = $this->load->view('member/addPhoto', $content_data, true);
            $this->load->view('template/admin', $data);

        } else {    // else there are NO errors
            //echo "success";
            $content_data['data'] = array('upload_data'=>$this->upload->data());
            $content_data['title'] = ' | Rochester Water Ski Show Team';
            $content_data['firstName'] = $this->session->userdata('firstName');
            $data['sess'] = $this->session;
            $data['content'] = $this->load->view('member/addPhoto_success', $content_data, true);
            $this->load->view('template/admin', $data);
        }
    }
4

1 に答える 1

1

$this->uri->segment(3) でセグメントを取得する必要はありません。

と同じようにコントローラーを呼び出すとcontroller/addPhoto/Testing、メソッドでパラメーターを自動的に取得できます。

function addPhoto($album) {
    echo $album;   // output: 'Testing';
}

$album は、メソッド内で既に使用できるようになりました。

パラメータがある程度静的な場合は、フォームメソッドを使用して、 のようなパラメータを渡すことができますecho form_open('controller/addPhoto/albumname');

動的にしたい場合は、ロジックを少しひねって隠しフィールドを使用して名前を渡すことができます。このようにして、メソッドはパラメータなしで呼び出され echo form_open('controller/addPhoto')、 を通じてアルバム名を取得します$this->input->post('myhiddeninput')

私が何かを誤解していると感じたら、お知らせください。

于 2011-07-15T19:13:42.957 に答える