我是CodeIgniter的新手.我需要处理一个表格.我在视图中有一个form.html页面
<html>
<head>
<title>Search</title>
</head>
<body>
<form action="search">
<input type="text" name="search" value="" size="50" />
<div>
<input type="submit" value="Submit" />
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
并形成控制器
class Form extends Controller {
function Form() {
parent::Controller();
}
function index() {
$this->load->view('form');
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个视图文件search.php但是当它被处理它显示页面未找到...
Sea*_*ira 32
在中号 .odel V .iew Ç .ontroller设置像笨的视图是用户界面元素.他们不应该解析结果.
如果我没有弄错的话,你要做的就是将数据传递www.yoursite.com/index.php/form
给www.yoursite.com/index.php/search
在非结构化的php中,你可能有form.html
一个表单动作search.php
.用户将导航到可能yoursite.com/form.html
会调用的yoursite.com/search.php
,可能会重定向到yoursite.com/results.php
.
在笨(和,据我了解,在任何MVC系统,无论何种语言的)的控制器,Form
要求其加载的功能form.html
查看 到自身,然后运行它.该视图生成用户与交互的代码(通常HTML,但不一定).当用户发出View无法处理的请求(请求更多数据或其他页面)时,它会将该请求传递回Controller,后者会加载更多数据或另一个View.
换句话说,视图决定了数据的显示方式.Controller将请求映射到Views.
当您希望在视图中显示复杂和/或更改的数据时,它会稍微复杂一些.为了保持MVC要求的关注点分离, CodeIgniter还为您提供了模型.
模型负责任何Web应用程序中最困难的部分 - 管理数据流.它们包含读取数据,写入数据的方法,最重要的是确保数据完整性的方法.换句话说,模型应该:
Akelos有一个很好的图形布局MVC的组件:
请求 - 响应http://svn.akelos.org/trunk/docs/images/akelos_mvc.png
话虽这么说,最简单的(阅读"最简单",而不是"最可扩展")方式来完成你想做的事情是:
function Form()
{
parent::Controller();
}
function index()
{
$this->load->view('form');
}
function search()
{
$term = $this->input->post('search');
/*
In order for this to work you will need to
change the method on your form.
(Since you do not specify a method in your form,
it will default to the *get* method -- and CodeIgniter
destroys the $_GET variable unless you change its
default settings.)
The *action* your form needs to have is
index.php/form/search/
*/
// Operate on your search data here.
// One possible way to do this:
$this->load->model('search_model');
$results_from_search = $this->search->find_data($term);
// Make sure your model properly escapes incoming data.
$this->load->view('results', $results_from_search);
}
Run Code Online (Sandbox Code Playgroud)
Don*_*nia 10
如果没有控制器加载和显示它,查看文件就没用了.您必须创建一个控制器来接收表单数据,处理它,然后显示处理结果.
您可以使用表单助手来设置表单开放标记,以及关闭标记:
<?php echo form_open('form/search'); ?>
<input type="text" name="search" value="" size="50" />
<div><input type="submit" value="Submit" /></div>
<?php echo form_close(); ?>
Run Code Online (Sandbox Code Playgroud)
不使用表单助手,您仍然可以这样写:
<form action="<?php echo site_url('form/search'); ?>">
Run Code Online (Sandbox Code Playgroud)
然后将search
方法添加到form
控制器:
function search()
{
//get form field
$search = $this->input->post('search');
// do stuffs here
//...
}
Run Code Online (Sandbox Code Playgroud)
请记住,CI仅帮助您使用基本代码组织并提供有用的库和帮助程序.但是您仍然需要在您的站点中编写该过程的算法.
不要忘记阅读下载的codeigniter包中附带的用户指南.你可以从那里的例子中学到很多东西.不要犹豫,在这里问你不知道的事情,很多stackoverflow会员会帮助你.