ghunti / laravel-base
Laravel 4 框架的一些基本类和覆盖类
Requires
- php: >=7.0.0
- illuminate/contracts: 5.5.*
- illuminate/database: 5.5.*
- illuminate/http: 5.5.*
- illuminate/routing: 5.5.*
- illuminate/support: 5.5.*
- illuminate/validation: 5.5.*
This package is not auto-updated.
Last update: 2024-09-14 16:03:16 UTC
README
这是一个为 Laravel 框架带来小改进的包。
所有改进都考虑到 Laravel 的方式和良好的开发实践。如果您想贡献力量,请不要犹豫。
安装
{
"require": {
"ghunti/laravel-base": "5.0.*"
}
}
将以下中间件添加到 app/Http/Middleware
protected $middleware = [ ...<other middleware>..., 'Ghunti\LaravelBase\Middleware\ShareMessagesFromSession', ];
功能
权限拒绝异常
Exception/PermissionDeniedException.php
我喜欢在我的控制器中使用异常,以获得更干净的代码和一系列的捕获,所以这只是一个当用户权限不足或未登录时抛出的异常。
验证器
这是对 Illuminate\Validation\Validator 的扩展,并添加了一个方法 passOrFail。
如果验证失败,该方法将创建一个新的 Ghunti\LaravelBase\Exception\ValidatorException 并将其注入到异常中,抛出它。
验证器异常
Exception/ValidatorException.php
这是一个包含失败验证对象的异常。想法是这样的
use Ghunti\LaravelBase\Exception\ValidatorException; ... try { Validator::make( Input::all(), array( 'name' => array( 'required', 'unique:table_name', ), ) )->passOrFail(); } catch (ValidatorException $e) { return Redirect::route('creation_route') ->withInput() ->withErrors($e->getValidator()); }
如你所见,这种方式我们可以从异常中检索验证器($e->getValidator())以任何我们想要的方式使用它。
带有消息的重定向
我喜欢 Laravel 重定向 错误 的方式,并将其在视图中可用,所以我已实现了相同逻辑的任何消息的方法 withMessages()。
return Redirect::route('some_route') ->withMessages( array('success' => 'Something worked for a change!!!') ); //or return Redirect::route('some_route') ->withMessages( array('error' => 'Crappy as usual!') );
检查我是否将数组传递给 withMessages() 方法,我甚至还指定了消息的类型,以便稍后在视图中可以进行
<?php $messageMap = array( 'information' => 'info', 'success' => 'success', 'warning' => 'warning', 'error' => 'danger', ); ?> @foreach ($messageMap as $key => $class) @if ($messages->has($key)) <div class="alert alert-{{ $class }}"> <ul class="list-unstyled"> @foreach ($messages->get($key, '<li>:message</li>') as $message) {{ $message }} @endforeach </ul> </div> @endif @endforeach
基本模型
BaseModel 是一个扩展 Eloquent 的抽象类,并提供了 getValidationRules() 方法。此方法将返回当前模型的验证规则,如果当前模型不存在,则调用 getCreateRules() 方法,如果存在,则调用 getEditRules() 方法。
如果您扩展的是 Eloquent 而不是 BaseModel,那么您将有机会在任何代码中调用 getValidationRules() 方法并确保获取适当的验证规则。
try { Validator::make( Input::all(), Model::getValidationRules() ) ->passOrFail(); ... //or try { $model = $this->repository->findOrFail($id); Validator::make( Input::all(), $model->getValidationRules() ) ->passOrFail(); ...
基本仓库
Repositories/BaseRepository.php
BaseRepository 尝试将仓库(模型/实体)的概念分开,因为有一些“问题”应该由仓库回答,而其他则由模型/实体回答。
想法是您的仓库包括所有可以击中数据库(或任何其他存储系统)的方法,在某些情况下甚至可以返回模型。
假设您想要按名称排序列出所有用户,因此您创建了 allOrderedByName 方法。您不是在模型中实现此方法,而是在仓库中实现(它最终会调用模型)
public function allOrderedByName($direction = 'asc') { return $this->model->orderBy('name', $direction)->get(); }
基本仓库也支持 作用域,因此您可以在仓库中而不是在模型中编写作用域
许可
MIT