spoolphiz / events
此包的最新版本(dev-master)没有可用的许可证信息。
dev-master
2015-01-14 23:54 UTC
Requires
- php: >=5.3.0
- cimaron/geocoder: dev-master
- illuminate/support: 4.0.x
This package is not auto-updated.
Last update: 2024-09-24 05:36:04 UTC
README
#Laravel 4 事件注册系统
一个提供创建事件、场地、参会者和讲师功能的包。本文档仍在不断完善中。
设置
使用 composer 安装包,并将以下条目添加到 app/config/app.php 中找到的服务提供者数组中
'Spoolphiz\Events\EventsServiceProvider',
然后,更新自动加载文件
composer.phar dump-autoload
最后,运行所有迁移以创建必要的数据库表
php artisan migrate --package=spoolphiz/events
##用法
本包旨在作为 RESTFul API 的一部分使用。以下是一些示例
###API 资源路由
###处理场地
建议通过对应的存储库类与模型交互。这意味着将场地存储库注入到您的控制器中
use \Input; use \Response; use Spoolphiz\Events\Interfaces\VenueRepository; class ApiVenuesController extends ApiBaseController { protected $venue; public function __construct(VenueRepository $venue) { $this->venue = $venue; } ... }
现在让我们创建一个用于添加新场地的控制器函数
/** * Create a new venue * * @return Response (json) */ public function postCreate() { $venue = $this->venue->newVenue(); $inputData = Input::get(); $venue->fill($inputData); $venue->validate(); //since validation passed, lets geocode this address $venue->geocode(); if (!$venue->save()) { App::abort(422, 'Resource failed to create'); } return Response::json($venue->toArray()); }
更新场地与添加类似
/** * Update a venue's info * * @return Response (json) */ public function putSingle($id) { $venue = $this->venue->find($id); $venue->fill(Input::get()); $venue->validate(); $venue->geocode(); if (!$venue->save()) { App::abort(422, 'Resource failed to updated'); } return Response::json($venue->toArray()); }
...那么,如何获取所有场地的列表呢?
/** * Get a listing of venues * * @return Response (json) */ public function getList() { $filters = Input::get(); if( empty($filters) ) { $data = $this->venue->all(); } else { $data = $this->venue->filtered($this->parseFilters($filters)); } if( empty($data) ) { $data = array(); } elseif( is_object($data) ) { $data = $data->toArray(); } return Response::json($data); }
注意 getList() 开头有对输入数据的检查,搜索/过滤数据将在下面的“搜索/过滤数据”部分中介绍
###搜索/过滤数据
以下功能可以作为过滤字段传入。如果在一个单页面应用中工作,应该对每个过滤变量调用 JSON.stringify()。这意味着您还需要在服务器端解码过滤字段。如果您不是将此包作为 API 的一部分使用,可以简单地创建一个具有与以下相同结构的关联数组,并将其传递给每个资源存储库(场地、事件、用户、参会者)的 filtered() 函数。
{ total : 0|1 //returns the count of events matching the rest of the filter criteria filter : { type : "AND"|"OR", //it is currently not possible to mix AND and OR in the same query filter : [ { name : "events.start_date", operator: ">=" //possible operators are: =, !=, <, <=, >, >=, in, not in, starts with, ends with, contains, not contains, search value : "2014-02-02" } //add more field queries here ] }, sort : [ {field : "venues.city", dir : "ASC"} //you can add more fields to sort by, format is table_name.field_name ], fields : ["events.*", "venues.city"], //this should contain an array of fields to return in format of table_name.field_name or table_name.* limit : 10, //number of results you want page : 0 //0 based page number for results that contain more records than requested in the 'limit' field above }