我继承了使用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');
}
客户要求将联系表单添加到包含此页面的几个页面中,我的问题是,我是否应该创建一个只处理联系表单提交的新方法?如果是这样,我将如何处理将验证错误发送回页面?联系表单都将具有相同的字段,所以我猜想创建一个新方法是要走的路?
答案 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)
));
}
}
回复联系表格(字符串)
<?php echo $contact_form; ?>
创建一个新的Controller来处理表单验证
答案 1 :(得分:0)
客户要求将联系表格添加到包含此页面的几个页面中,我的问题是,我是否应该创建一个只处理联系表单提交的新方法?
创建一个新控制器和新方法
如果是这样,我将如何处理将验证错误发送回页面?
查看codeigniter文档以获取表单验证。基本上如果他们有错误,你将再次向他们展示一个视图。无论他们来自哪个页面&#34;来自&#34;。
联系表单都会有相同的字段,所以我猜想创建一个新方法是可行的方法吗?
您需要验证表单字段,希望将联系信息捕获到数据库,向客户发送电子邮件确认,然后向销售人员发送电子邮件,除非直接从数据库完成,然后显示视图谢谢你。
这些步骤中的每一步都是一个单独的方法。
您可以选择在感谢页面上显示电子邮件地址,说明我们已将您的副本发送到电子邮件地址:something@gmail.com - 如果客户弄乱了电子邮件地址,他们可以回去纠正它。