所以我在codeigniter中遇到了form_submit问题。我有一个名为welcome的控制器,其方法名为email。每当我点击提交按钮时,页面都会刷新,但只需添加?firstname =& email =& message =& submit =提交到我的网址但不执行该方法。这可能是什么原因发生了?
下面是我的HTML代码。
<form role="form">
<div class="form-group">
<label>Name</label>
<?php $this->load->helper("form"); ?>
<?php echo validation_errors('<p class = "error">'); ?>
<?php echo form_open('welcome/email');
$data = array('type'=>'text','class'=>'form-control', 'name'=>'firstname');
echo form_input($data);
?>
</div>
<div class="form-group">
<label>Email</label>
<?php
$data = array('type'=>'email','class'=>'form-control', 'name'=>'email');
echo form_input($data);
?>
</div>
<div class="form-group">
<label>Message</label>
<?php
$data= array('type'=>'text','name'=>'message','class'=>'form-control','rows'=>7);
echo form_textarea($data);
?>
</div>
<div class="pull-right">
<!--<button type="submit" class="btn btn-custom btn-lg" action="welcome/email">Submit</button> -->
<?php
echo form_submit('submit','Submit');
echo form_close();
?>
</div>
这是我的控制器
<?php /*if ( ! defined('BASEPATH')) exit('No direct script access allowed');*/
class Welcome extends CI_Controller {
function index(){
$this->load->view('index-sidebar');
}
function email(){
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email Address','required|valid_email');
$this->form_validation->set_rules('firstname', 'Name', 'required|min_length[2]|max_length[30]');
$this->form_validation->set_rules('message', 'Message', 'required|min_length[5]|max_length[200]');
if ($this->form_validation->run()==FALSE){
$this->load->view('message not sent');
}
else{
$this->load->library('email');
$this->email->from(set_value('email'),set_value('name'));
$this->email->to("mhansen1989@gmail.com");
$this->email->subject('tutoring');
$this->email->message(set_value('message'));
$this->email->send();
echo $this->email->print_debugger();
$this->load->view('success');
}
}
}
答案 0 :(得分:1)
表单标签中没有操作参数。您是否提交表单?
试试这个
<form action="<?= base_url().'welcome/email'?>" role="form" method="post">
答案 1 :(得分:0)
所以这里
if ($this->form_validation->run()==FALSE){
$this->load->view('message not sent');
}
在您的正确视图名称中输入“未发送消息&#39;
”$this->load->helper("form");
将你的助手加载到控制器中 - 更好的是配置/自动加载
和这个
$data = array('type'=>'text','class'=>'form-control','name'=>'firstname');
echo form_input($data);
在表单中反复重复$ data。从技术上讲它会起作用,但它会在某些时候陷入困境,所以让它们成为不同的名字
$first = array('type'=>'text','class'=>'form-control','name'=>'firstname');
echo form_input($first);
如果验证为false,您需要再次显示表单中的值。看看http://www.codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform