openbuildings / jam-resource
Kohana 资源用于 Jam ORM,用于连接路由、控制器和模型
Requires
- openbuildings/jam: ~0.4.0
Requires (Dev)
- phpunit/dbunit: 1.2.*
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2022-02-01 12:32:47 UTC
README
资源充当路由、模型和请求之间的桥梁。
jam-resource
模块与强大的 Kohana 3.3 的 Jam ORM 一起工作
主要功能
- 在引导程序中定义资源,并为它们自动创建路由
- 从模型对象或集合生成 URL
- 嵌套资源
- 访问当前请求的模型对象、模型集合或父对象
- 支持 Jam ORM 中的可缩略行为
- 限制路由(和动作)到某些 HTTP 方法
- 轻松构建 RESTful API
定义资源
定义资源的最简单方法
<?php // Define the users resource Resource::set('users'); ?>
这将生成七个路由,用于以下目的
HTTP 动词 | 路径 | 动作 | 用途 |
---|---|---|---|
GET | /users | index | 显示所有用户的列表 |
GET | /users/new | new | 返回用于创建新用户的 HTML 表单 |
POST | /users | create | 创建新用户 |
GET | /users/1 | show | 显示特定用户 |
GET | /users/1/edit | edit | 返回用于编辑用户的 HTML 表单 |
PUT | /users/1 | update | 更新特定用户 |
DELETE | /users/1 | destroy | 删除特定用户 |
如您所见,每个动作都具有非常具体的目的。这可能是您在 PHP 世界中不习惯的事情。一切都是从 Ruby on Rails 路由 衍生出来的。
您可以轻松限制这些默认路由的创建或添加更多
仅特定路由
<?php Resource::set('users', array( 'only' => array( 'index', 'show' ) ));
默认路由除一些外
<?php Resource::set('users', array( 'except' => array( 'destroy', 'edit', 'update' ) ));
添加额外路由
<?php Resource::set('users', array( 'with' => array( 'picture', 'collection' => array( 'featured' ) ) ));
这将使以下 URL 可访问(除默认外)
- /users/1/picture
- /users/featured
当然,您可以使用这些选项组合来定义应用程序需要的那些路由。
资源将生成的路由分为 成员 路由和 集合 路由。集合路由没有特定 id,而成员路由涉及特定资源。
如上所述,资源充当路由、模型和控制器之间的胶水。
模型、控制器和 URI 路径都是从资源名称派生出来的。
users
资源会猜测控制器是 Controller_Users
,模型是 Model_User
。
您可以轻松地明确指定这些
<?php Resource::set('photos', array( 'controller' => 'pictures', 'model' => 'image' ));
这将仍然创建用于访问 /photos
和 /photos/1
上照片的路由。但它将使用 Controller_Pictures
中的操作和图像模型。
使用 path
选项更改路径字符串
<?php Resource::('users', array( 'path' => 'people' ));
这将创建针对类似 /people
、/people/1
等 URI 的路由,同时仍然使用用户控制器和用户模型。
在控制器中访问资源
当您访问 /users
时,生成的路由将打开 Controller_Users::action_index()
。
从那里,您可以使用以下方法访问用户模型的 Jam_Collections:
$this->request->resource()->collection()
您还可以使用以下方法访问 Jam_Builder:
$this->request->resource()->builder()
当您访问 /users/1
时,路由将打开 Controller_Users::action_show()
。
从那里,您可以使用以下方法访问指定的用户模型:
$this->request->resource()->object()
不需要检查是否已加载。如果不存在具有指定 ID 的用户模型,则会抛出 Jam_Exception_Notfound
。
生成 URL
您还可以为特定模型或集合生成资源 URL。
使用以下方法:
<?php // Jam_Model $user = Jam::factory('user', 1); // Jam_Collection $users = Jam::query('user'); // /users/1 Resource::url($user); // /users Resource::url('users'); // /users Resource::url($users); // /users/1/edit Resource::url($user, array('action' => 'edit')); // /users Resource::url('users', array('action' => 'create')); ?>
子资源
待办事项:解释子资源的定义、使用和应用
单一资源
待办事项:解释单一资源是什么以及应该如何使用
可生成缩略名
您可以使用 sluggable
(TRUE
|FALSE
)选项和 slug_regex
来设置路由以使用缩略名而不是主键。
待办事项:在此处解释可生成缩略名的实现
格式
待办事项:在此处解释格式
许可协议
© 版权 Despark Ltd. 2012