PHP code example of fullscreeninteractive / silverstripe-restful-helpers
1. Go to this page and download the library: Download fullscreeninteractive/silverstripe-restful-helpers library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
fullscreeninteractive / silverstripe-restful-helpers example snippets
use FullscreenInteractive\Restful\Interfaces\ApiReadable;
use SilverStripe\Security\Member;
use SilverStripe\ORM\DataObject;
class Project extends DataObject implements ApiReadable
{
private static $db = [
'Title' => 'Varchar(100)',
'Date' => 'DBDate'
];
private static $has_one = [
'Author' => Member::class
];
public function toApi(): array
{
return [
'title' => $this->Title,
'date' => $this->dbObject('Date')->getTimestamp()
];
}
}
class MyProjectsApi extends FullscreenInteractive\Restful\Controllers\ApiController
{
private static $allowed_actions = [
'index',
'createProject',
'deleteProject'
];
public function index()
{
$this->ensureGET();
return $this->returnPaginated(Project::get());
}
public function createProject()
{
$this->ensurePOST();
$member = $this->ensureUserLoggedIn([
'ADMIN'
]);
list($title, $date) = $this->ensureVars([
'Title',
'Date' => function($value) {
return strtotime($value) > 0
}
]);
$project = new Project();
$project->Title = $title;
$project->Date = $date;
$project->AuthorID = $member->ID;
$project->write();
return $this->returnJSON([
'project' => $project->toApi()
]);
}
public function deleteProject()
{
$this->ensurePOST();
$member = $this->ensureUserLoggedIn([
'ADMIN'
]);
list($id) = $this->ensureVars([
'id'
]);
$project = Project::get()->byID($id);
if (!$project) {
return $this->failure([
'status_code' => 404,
'message' => 'Unknown project'
]);
}
if ($project->canDelete($member)) {
$project->delete();
}
return $this->success();
}
}
private static $extensions = [
UuidableExtension::class
];
public function projects()
{
if (!$this->ensureUserLoggedIn()) {
return $this->failure(401);
}
// ..
}