michaeltintiuc / laravel-component
为laravel项目提供几个启动接口和抽象类
v0.1
2017-07-16 21:13 UTC
Requires
- php: >=5.6.4
- illuminate/support: 5.3.*
This package is not auto-updated.
Last update: 2024-09-22 08:04:51 UTC
README
💡 为laravel项目提供几个启动接口和抽象类
内容
安装
通过composer安装
composer require michaeltintiuc/laravel-component
使用
目录结构
app/Components/ - 存储所有组件目录,如Users、Posts、Tags等
app/Components/Users - 存储模型类(例如User)以及所有环境目录,如Admin、Site等
app/Components/Users/{ENV} - 存储与组件特定环境实现相关的所有类和 routes.php
app/Components/Users/{ENV}/Requests - 存储特定环境组件的表单验证类
控制器
namespace Acme\Components\Users\Admin; use Illuminate\Http\Request; use MichaelT\Component\Admin\ComponentController; class UsersController extends ComponentController { public function __construct(Request $request, PostTagsRepo $repo) { parent::__construct($request, $repo); $this->setComponent('user'); $this->setBaseView('admin.users'); $this->setSearchRoute('admin.users.index'); } public function index(Request $request) { if ($request->has('search')) { return $this->search($request->search); } $this->setTitle('All users'); $this->setHeading('Users list'); $users = $this->repo->all(); return $this->view('index') ->with(compact('users')); } ... }
存储库
接口 即 合同
namespace Acme\Components\Users\Admin; use MichaelT\Component\Admin\Contracts\RepoContract; use MichaelT\Component\Admin\Contracts\Searchable; interface UsersRepoContract extends RepoContract, Searchable { }
存储库
namespace Acme\Components\Users\Admin; use Acme\Components\Users\User; use MichaelT\Component\Admin\ComponentRepo; use Acme\Components\Users\Admin\UsersRepoContract; class UsersRepo extends ComponentRepo implements UsersRepoContract { public function __construct(User $model) { parent::__construct($model); $this->setComponent('user'); } public function all() { return $this->model->get(); } public function paginate() { return $this->model ->paginate($this->getPerPage()); } public function find($id) { try { return $this->model->findOrFail($id); } catch (\Exception $e) { throw new \FindAdminException($this->error('find')); } } ... }
路由
组件
Route::group(['namespace' => 'Acme\Components\Users\Admin'], function () { Route::resource('users', 'UsersController'); });
加载路由
Route::group(['prefix' => 'admin', 'as' => 'admin.'], function () { Route::group(['middleware' => ['auth']], function () { require_once app_path().'/Components/Users/Admin/routes.php'; }); });
贡献
贡献、错误报告、特性及拉取请求始终欢迎!