0

已解决:在联系控制器中,我拥有function index页面位置,然后是一个单独的名为function send_mail. 我删除了 send_mail 函数并将代码移至 index 函数,当发送电子邮件或返回错误消息时,它将 url 保留为 /contact 而不是 /contact/send_mail,现在下拉菜单现在可以工作了!当然,在我的联系人视图中,我更改 echo form_open('contact/send_email');为 echoform_open('contact');


我使用 Codeigniter 框架构建了一个响应式网站。

当屏幕尺寸缩小到手机/平板电脑的宽度时,导航将从按钮变为下拉选择菜单。

我的控制器中有一个名为 send_mail 的函数,当用户单击表单时,如果他们填写的表单不正确或成功消息,他们将收到一条错误消息,并且在单击此按钮时在 URL 中添加 send_mail 最后其中。

表单确实提交并且所有工作,但在测试时;只有当响应式站点更改为下拉选择菜单并将 send_mail 添加到 url 的末尾时,您才能导航到另一个页面 - 它只是停留在同一页面上。

目前我正在测试并且我已经在本地主机上构建了该站点,所以不确定它是否只是这个或可能的解决方案?

在这篇文章中,我没有添加任何代码(但如果有帮助的话可以),因为我作为指导或建议询问为什么这不起作用?这是否与我的媒体查询或下拉菜单有关,因为即使 send_mail 在最后,当它是其他宽度作为按钮时它仍然有效?

代码如下:

提交表单时,是否有一种可能的方法将 send_email 函数隐藏在路由文件夹中的 url 中,因此它只是显示http:///www.websitename/contact而不是http:///www.websitename/contact/email_send当用户被发送回表单时,这与“if 语句”有关吗?

同样,当使用标准导航样式在其他宽度下调整站点大小时,一切都可以正常工作,只是隐藏的下拉列表,直到它显示在媒体查询中。

选择菜单的 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

联系人控制器中的 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 函数并将代码移至 index 函数,当发送电子邮件或返回错误消息时,它将 url 保留为 /contact 而不是 /contact/send_mail,现在下拉菜单现在可以工作了!当然,在我的联系人视图中,我更改了 echo form_open('contact/send_email'); 回显 form_open('contact');

于 2013-01-10T09:24:27.703 回答