moraesgil/api-restful-trait

一个简单的Laravel特性,实现了restful crud功能。

v1.0.0 2018-09-29 01:46 UTC

This package is auto-updated.

Last update: 2024-09-16 09:14:31 UTC


README

一个简单的Laravel特性,实现了restful crud功能。

安装

使用Composer

$ composer require moraesgil/api-restful-trait
{
   "require": {
      "moraesgil/api-restful-trait": "~1.0"
   }
}

用法

在routes/api.php或您偏好的路由文件中创建您的路由

Route::resource('/samples', 'YourLaravelController', ['except' => ['create', 'edit', 'show']]);

确保您有一个名为App\Entities\YourModel的模型,其名称与控制器相同,以自动加载模型实体,或者您可以注入依赖项,请参阅以下 Extras 区域中的以下说明...

//terminal
php artisan make model YourLaravel

在您的控制器中

use Traits\Controllers\ApiRestfulTrait;  //<<<<< add this line

class YourLaravelController extends Controller {
     use ApiRestfulTrait;  //<<<<< add this line  

     // ..others non-crud methods
}

包含EntityValidatorTrait,这是一个依赖项。请参阅文档以获取更多信息。此外,请参阅本节中关于自动加载模型实体的信息。

use Traits\Entities\EntityValidatorTrait;  //<<<<< add this line

class YourLaravel extends Model {
   use EntityValidatorTrait; //<<<<< add this line
}

Extras

获取索引页面

如果您不是ajax请求,可能需要在index()中调用页面,我们有一个getPage(),您可以重写方法或通过构造函数传递数据,您还可以通过传递路由名称重定向到另一个页面;

//in or controller you can pass
class YourLaravelController extends Controller {
   public function __construct()
   {  
      //Passing view and data
       $this->indexView = "youCrudBlade"; //default "crud"
       $this->indexData = [
          "pageTitle" => "Page title for exemple"
       ];

       // OR redirect to named route
       $this->indexRedirectRouteName ="myroute.indexpage"
   }
}

自动加载模型实体

默认情况下,它尝试访问与控制器同名的模型,您可以在构造函数中通过名称或对象传递您的实体;

class YourLaravelController extends Controller {
   public function __construct(Mymodel $m)
   {
       $this->Model = $m;
       // or
       $this->modelName = "Mymodel";
       // or Just create a model same name of controller, from this controller sample "YourLaravel"
   }
}

从实体自定义方法获取数据

默认情况下,它返回Laravel分页,限制由请求决定,您可以重写方法或从您的实体调用自定义方法,传递$modelGetMethod;

class YourLaravelController extends Controller {
   public function __construct()
   {
       $this->modelGetMethodName = "myCustomPaginate";
   }
}

依赖项

作者

  • Gilberto Prudêncio Vaz de Moraes - 初始工作 - MoraesGil

许可

本项目采用MIT许可 - 请参阅LICENSE文件以获取详细信息