您好 我正在按照http://www.ibm.com/developerworks/web/library/wa-codeigniter/
提供的Codeigniterr入门指南我已按照说明创建了前视图并添加了控制器来处理表单提交。理想情况下,当我提交表单时,它应该加载模型类并执行函数以将详细信息放在数据库上,而只是在浏览器中打印出模型的代码。
**Code of view (Welcome.php)**
----------------
<?php
class Welcome extends Controller {
function Welcome()
{
parent::Controller();
}
function index()
{
$this->load->helper('form');
$data['title'] = "Welcome to our Site";
$data['headline'] = "Welcome!";
$data['include'] = 'home';
$this->load->vars($data);
$this->load->view('template');
}
function contactus(){
$this->load->helper('url');
$this->load->model('mcontacts','',TRUE);
$this->mcontacts->addContact();
redirect('welcome/thankyou','refresh');
}
function thankyou(){
$data['title'] = "Thank You!";
$data['headline'] = "Thanks!";
$data['include'] = 'thanks';
$this->load->vars($data);
$this->load->view('template');
}
}
/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */
**Code of Model**
--------------
class mcontacts extends Model{
function mcontacts(){
parent::Model();
}
}
function addContact(){
$now = date("Y-m-d H:i:s");
$data = array(
'name' => $this->input->xss_clean($this->input->post('name')),
'email' => $this->input->xss_clean($this->input->post('email')),
'notes' => $this->input->xss_clean($this->input->post('notes')),
'ipaddress' => $this->input->ip_address(),
'stamp' => $now
);
$this->db->insert('contacts', $data);
}
**OUTPUT after clicking submit**
-----------------------------
class mcontacts extends Model{ function mcontacts(){ parent::Model(); } } function addContact(){ $now = date("Y-m-d H:i:s"); $data = array( 'name' => $this->input->xss_clean($this->input->post('name')), 'email' => $this->input->xss_clean($this->input->post('email')), 'notes' => $this->input->xss_clean($this->input->post('notes')), 'ipaddress' => $this->input->ip_address(), 'stamp' => $now ); $this->db->insert('contacts', $data); }
我尝试过做这些事情 1.使所有PHP代码可执行 2.将文件的所有权更改为www-data 3.为整个www
制作许可777但是,模型代码似乎只是打印出来......请帮助
答案 0 :(得分:1)
可能对您有所帮助的一些小问题:
在您的控制器中,将索引方法指向您要在该页面上调用的方法。例如:
function index()
{
$this->welcome();
}
这将有助于保持清洁和清晰,特别是如果其他人随后与您一起处理代码。我选择了welcome,因为这是控制器类的名称,这将使事情变得简单。
在你的模型中,这个:
class mcontacts extends Model{
应该是:
class Mcontacts extends Model{
将这些类名称大写!这可能会给你带来麻烦。
有关详情,请参阅此处:http://codeigniter.com/user_guide/general/models.html
不要在您的班级或方法名称中使用驼峰案例。这不会导致您的代码失败,但这是普遍接受的做法。有关详细信息,请参阅Codeigniter的PHP样式指南:http://codeigniter.com/user_guide/general/styleguide.html
答案 1 :(得分:0)
很难看到格式化,但在模型中的构造函数方法(mcontacts())之后是否有额外的大括号?这会导致问题!此外,虽然代码看起来一般都没问题,但是可能有更好的方法来使用框架,特别是如果你做的事情比你所展示的更复杂。例如,自动加载,表单验证等。我可以建议您阅读用户指南吗?这是非常彻底和清晰的,应该帮助你很多。 http://codeigniter.com/user_guide/index.html