📅  最后修改于: 2023-12-03 15:00:51.655000             🧑  作者: Mango
FuelPHP 是一个基于 PHP 的开源 Web 应用框架,控制器是 FuelPHP 中的一个重要组成部分,其中用于管理应用程序中的请求和响应。
控制器是应用程序的请求处理器,是一个类,其中包含处理应用程序请求和响应的方法。
控制器接受外部请求并将请求分配给相应的处理方法。一旦处理方法完成了所要求的任务,它将创建和维护视图,最后把响应发送回客户端。
控制器是一个 PHP 类,通常保存在 app/classes/controller/
目录中。
以下是一个基本的控制器示例:
<?php
class Controller_HelloWorld extends Controller
{
public function action_index()
{
echo 'Hello, world!';
}
}
其中,Controller_HelloWorld
继承了 FuelPHP 的基础控制器 Controller
,并且定义了一个 action_index
方法,用于处理请求。
FuelPHP 中的路由规则将 URL 映射到控制器操作。默认情况下,FuelPHP 会将 http://example.com/controller/action
映射到 Controller_Controller/action_index
。
以下是一个路由定义的示例:
<?php
// app/config/routes.php
return array(
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
);
其中,hello(/:name)?
是路由规则匹配的 URL,welcome/hello
是定义的控制器名称和操作名称,name
是路由参数。
要创建一个控制器,可以使用以下步骤:
Controller
。以下是一个更完整的示例:
<?php
class Controller_Blog extends Controller
{
public function action_index()
{
$data['posts'] = Model_Post::find_all();
$this->response->body = View::forge('blog/index', $data);
}
public function action_view($id = null)
{
is_null($id) and Response::redirect('blog');
$data['post'] = Model_Post::find_by_pk($id);
$this->response->body = View::forge('blog/view', $data);
}
public function action_create()
{
if (Input::method() == 'POST') {
$post = Model_Post::forge(array(
'title' => Input::post('title'),
'body' => Input::post('body'),
));
if ($post and $post->save()) {
Response::redirect('blog');
}
}
$this->response->body = View::forge('blog/create');
}
public function action_edit($id = null)
{
is_null($id) and Response::redirect('blog');
$post = Model_Post::find_by_pk($id);
if (Input::method() == 'POST') {
$post->title = Input::post('title');
$post->body = Input::post('body');
if ($post->save()) {
Response::redirect('blog');
}
} else {
$data['post'] = $post;
$this->response->body = View::forge('blog/edit', $data);
}
}
public function action_delete($id = null)
{
is_null($id) and Response::redirect('blog');
if ($post = Model_Post::find_by_pk($id)) {
$post->delete();
Response::redirect('blog');
} else {
Response::redirect('blog');
}
}
}
在此控制器中,包含 5 个操作方法,用于完成博客的常见操作:显示所有文章、显示特定文章、创建文章、编辑文章和删除文章。