0

解決済み:ページの場所を指定した連絡先コントローラーfunction indexで、と呼ばれる別のコントローラーを使用しましたfunction send_mail。send_mail関数を削除し、コードをインデックス関数に移動しました。この関数は、電子メールが送信されたとき、またはエラーメッセージが返されたときに、URLを/ contact / send_mailではなく/contactとして保持し、ドロップダウンメニューが機能するようになりました。もちろん、連絡先ビュー echo form_open('contact/send_email');でエコーに変更しましたform_open('contact');


CodeigniterFrameworkを使用してレスポンシブWebサイトを構築しました。

画面サイズがモバイル/タブレットの幅に縮小すると、ナビゲーションがボタンからドロップダウン選択メニューに変わります。

コントローラにsend_mailという関数があり、ユーザーがフォームをクリックすると、フォームに正しく入力されなかった場合はエラーメッセージが表示されるか、成功メッセージが表示されます。このボタンをクリックすると、URLにsend_mailが追加されます。それの。

フォームは送信され、すべてが機能しますが、テスト時です。レスポンシブサイトがドロップダウン選択メニューに変わり、send_mailがURLの最後に追加された場合にのみ、別のページに移動することはできません。同じページにとどまります。

現在、私はテストを行っており、ローカルホスト上にサイトを構築したので、それがこれだけなのか、これに対する可能な解決策なのかわからないのですか?

この投稿では、ガイダンスまたは提案としてこれが機能しない理由を尋ねていたので、コードを追加していません(ただし、役立つ場合は追加できます)。send_mailが最後にある場合でも、ボタンとして他の幅である場合でも機能するので、これは私のメディアクエリまたはドロップダウンと関係がありますか?

コードは以下のとおりです。

フォームが送信されたときにroutesフォルダーのURLでsend_email関数を非表示にして、ユーザーがフォームに返送されたときに「ifステートメント」のhttp:///www.websitename/contact代わりに表示されるようにする方法はありますか?http:///www.websitename/contact/email_send

ここでも、他の幅で標準のナビゲーションスタイルを使用してサイトのサイズを変更すると、すべてが完全に機能します。メディアクエリに表示されるまで非表示になっているドロップダウンだけです。

選択メニューのHTML(モバイル版でない限り非表示)

        <option value="" selected="selected">MENU</option>  

                <option value="Home">Home</option> 
                <option value="about">About</option> 
                <option value="testimonials">Testimonials</option> 
                <option value="blog">Blog</option> 
                <option value="contact">Contact</option> 
            </select> 

CSSメディアクエリ(モバイル)

nav ul     { display: none; }
nav select { display: inline-block; }

レスポンシブナビゲーションのJquery

ContactControllerのsend_email関数

public function send_email (){

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

        $this->form_validation->set_rules('name','Name','trim|required|htmlspecialchars|max_length[30]|xss_clean');
        $this->form_validation->set_rules('email','Email Address','trim|valid_email|required|htmlspecialchars|max_length[100]|xss_clean');
        $this->form_validation->set_rules('message','Message','trim|required|htmlspecialchars|xss_clean');

        $this->form_validation->set_error_delimiters('<div id="errors">&bull;&nbsp;','</div>');

        if ($this->form_validation->run() == FALSE) {
            $data['success'] = '';
            $data['page_title'] = 'Contact';
            $data['content'] = 'contact';
            $this->load->view('template', $data);

        }else{

            $data['success'] = 'The email has successfully been sent';
            $data['name'] = $this->input->post('name');
            $data['email'] = $this->input->post('email');
            $data['message'] = $this->input->post('message');

            $html_email = $this->load->view('html_email', $data, true);

            //load the email class
            $this->load->library('email');

            $this->email->from(set_value('email'), set_value('name'));
            $this->email->to('emailaddressusuallyhere');
            $this->email->subject('Message from Website');
            $this->email->message($html_email);

            $this->email->send();

            $data['success'] = 'The email has successfully been sent';
            $data['page_title'] = 'Contact';
            $data['content'] = 'contact';   
            $this->load->view('template', $data);
        }
    }
4

1 に答える 1

0

解決済み:連絡先コントローラーに、ページの場所を含む関数インデックスと、関数 send_mail と呼ばれる別のインデックスがありました。send_mail 関数を削除し、コードをインデックス関数に移動しました。これにより、電子メールが送信されたとき、またはエラー メッセージがスローされたときに、URL が /contact/send_mail ではなく /contact として保持され、ドロップダウン メニューが機能するようになりました。もちろん、連絡先ビューで変更しました echo form_open('contact/send_email'); form_open('contact'); をエコーし​​ます。

于 2013-01-10T09:24:27.703 に答える