处理联系表格提交Codeigniter

时间:2014-04-30 15:11:19

标签: php codeigniter

我继承了使用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');
}

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

2 个答案:

答案 0 :(得分:0)

部分视图(表格)

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


将视图作为数据返回

  

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

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

主布局

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

<强>视图/主/ 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)
        ));
    }
}

somecontrollerview

回复联系表格(字符串)

<?php echo $contact_form; ?>

联系控制器

创建一个新的Controller来处理表单验证

答案 1 :(得分:0)

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

  

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

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

  

查看codeigniter文档以获取表单验证。基本上如果他们有错误,你将再次向他们展示一个视图。无论他们来自哪个页面&#34;来自&#34;。

联系表单都会有相同的字段,所以我猜想创建一个新方法是可行的方法吗?

  

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

     

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

     

您可以选择在感谢页面上显示电子邮件地址,说明我们已将您的副本发送到电子邮件地址:something@gmail.com - 如果客户弄乱了电子邮件地址,他们可以回去纠正它。