openbuildings/jam-resource

此软件包已被放弃,不再维护。未建议替代软件包。

Kohana 资源用于 Jam ORM,用于连接路由、控制器和模型

安装量: 1,193

依赖关系: 0

建议者: 1

安全: 0

星标: 0

关注者: 17

分支: 0

类型:kohana-module

0.2.3 2014-03-25 15:39 UTC

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'));
?>

子资源

待办事项:解释子资源的定义、使用和应用

单一资源

待办事项:解释单一资源是什么以及应该如何使用

可生成缩略名

您可以使用 sluggableTRUE|FALSE)选项和 slug_regex 来设置路由以使用缩略名而不是主键。

待办事项:在此处解释可生成缩略名的实现

格式

待办事项:在此处解释格式

许可协议

© 版权 Despark Ltd. 2012

许可协议