【问题标题】:Handling contact form submissions Codeigniter处理联系表单提交 Codeigniter
【发布时间】:2014-05-01 01:30:09
【问题描述】:

我继承了一个使用 Codeigniter (v2.1.4) 构建的网站。客户要求进行更改,我不确定实现更改的最佳方法。

我在主控制器中有以下方法为新的货车页面提供动力。

public function new_vans($slug = null){
    $this->load->view('inc/header_view');
    if($slug === NULL){
        //If no slug is provided, show all new vans
        $this->load->view('new_vans_view');
    }else{
        //If there is a slug, just show the selected van, or redirect if nothing returned
        $data['new_van'] = $this->Database->getSingle('new_vans', array('slug' => $slug));
        if(!empty($data['new_van'])){
            $this->load->view('new_van_details_view',$data);
        }else{
            redirect('/new-vans');
        }
    }
    $this->load->view('inc/footer_view');
}

客户要求将联系表单添加到包括这个页面在内的几个页面中,我的问题是,我应该创建一个只处理联系表单提交的新方法吗?如果是这样,我将如何处理将验证错误发送回页面?联系表格都将具有相同的字段,所以我猜想创建一个新方法是要走的路吗?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    部分视图(表单)

    部分视图适用于表单,它们可以重复使用 就像您的客户要求的那样。


    将视图作为数据返回

    还有第三个可选参数可以让你改变行为 函数,以便它返回数据作为 字符串而不是将其发送到您的浏览器。 如果您想以某种方式处理数据,这可能很有用。 如果将参数设置为 true(布尔值),它将返回数据。 默认行为是 false,将其发送到您的浏览器。 如果要返回数据,请记住将其分配给变量:

    $string = $this->load->view('myfile', '', true);
    

    主布局

    创建一个主布局,以便您可以包装您的视图 在您的视图目录中创建一个新文件

    views/master/layout.php

    <body>
        <?php $this->load->view($view); ?>
    </body>
    

    控制器

    class someController extends CI_Controller
    {
        public function __construct()
        {
            parent::__construct();
            $this->template = 'master/layout';
        }
        
        public function index()
        {
            return $this->load->view($this->template, array(
                'view'  =>  'somecontrollerview',
                'contact_form'  =>  $this->load->view('partials/forms/contact', array(), true)
            ));
        }
    }
    

    一些控制器视图

    回显联系表格(字符串)

    <?php echo $contact_form; ?>
    

    联系控制器

    创建一个新的控制器来处理你的表单验证

    【讨论】:

      【解决方案2】:

      客户要求将联系表单添加到包括这个页面在内的几个页面中,我的问题是,我应该创建一个只处理联系表单提交的新方法吗?

      创建一个新的控制器和新的方法

      如果是这样,我将如何处理将验证错误发送回页面?

      查看 codeigniter 文档以进行表单验证。基本上,如果他们有错误,您将再次向他们展示带有表单的视图。他们“来自”哪个页面并不重要。

      联系表单都有相同的字段,所以我想创建一个新方法是要走的路吗?

      您需要验证表单字段,希望将联系信息捕获到数据库,向客户发送电子邮件确认,并向销售人员发送电子邮件,除非它是直接从数据库中完成的,然后显示视图非常感谢。

      每个步骤都是一个单独的方法。

      您可以选择在感谢页面上显示电子邮件地址,说“我们已向您的电子邮件地址发送了一份副本:something@gmail.com - 这样如果客户弄乱了电子邮件地址,他们可以返回并更正它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-01
        • 1970-01-01
        • 2012-09-30
        • 1970-01-01
        • 2016-11-10
        • 1970-01-01
        相关资源
        最近更新 更多