ixudra / imageable
适用于Laravel 5框架的自定义图像处理包 - 由Ixudra开发
Requires
- php: >=7.2
- illuminate/database: >=6.0
- illuminate/support: >=6.0
- ixudra/core: ~6.0
- laracasts/presenter: 0.2.*
- laravelcollective/html: ~6.0
Suggests
- ixudra/translation: Custom PHP translation library for the Laravel 5 framework
README
适用于Laravel 5框架的自定义图像处理包 - 由Ixudra开发。
ixudra/imageable包提供了一个易于使用的多态图像模型,该模型可以链接到任何Laravel PHP应用程序中的一个或多个模型。该包包含一个图像模型类以及一个工厂类,用于创建和编辑图像模型。此外,该包还将处理将实际文件移动和存储到正确位置。
此包可以在任何给定时间由任何人使用,但请注意,它是针对我个人的自定义工作流程进行优化的。它可能不完全适合您的项目,可能需要进行修改。
安装
通过Composer获取此包
{ "require": { "ixudra/imageable": "8.*" } }
将服务提供者添加到您的config/app.php
文件中
'providers' => array( //... Ixudra\Imageable\ImageableServiceProvider::class, ),
使用artisan运行包迁移
php artisan migrate --package="ixudra/imageable"
或者,您也可以使用artisan发布迁移
// Publish all resources from all packages php artisan vendor:publish // Publish only the resources of the package php artisan vendor:publish --provider="Ixudra\\Imageable\\ImageableServiceProvider"
使用方法
创建一个与Image
模型多态关联的模型
use Ixudra\Imageable\Models\Image; use Ixudra\Imageable\Traits\ImageableTrait; class Card extends Eloquent { use ImageableTrait; protected $imagePath = 'images/cards'; public function image() { return $this->morphOne( Image::class, 'imageable' ); } public function delete() { $this->image->delete(); parent::delete(); } }
此类必须扩展Ixudra\Imageable\Traits\ImageableTrait
特质,并且必须具有可用的imagePath
属性。该imagePath
属性描述了在系统上存储图像的路径。该包使用public/
目录作为起点,并将imagePath
的值附加到它以生成完整路径。
您可以使用包中提供的ImageFactory
类创建新的Image
模型。该ImageFactory
将负责创建Image
模型,将Image
链接到指定的模型,并将上传的文件移动到指定模型中指定的位置。
ImageFactory
期望一组特定的输入参数
file
包含实际上传的文件alt
包含图像的名称(在显示图像时将用作alt
)title
包含图像的名称(在显示图像时将用作title
)
更新图像的工作方式与创建它们类似。您只需提供正确的信息,ImageFactory
就会为您处理其余的操作。您还可以在不实际更新上传的文件的情况下更新图像信息。这可以通过省略传递给工厂的数据中的file
属性来实现。
以下示例提供了一个利用包功能的完整工厂类的示例
use Ixudra\Imageable\Services\Factories\ImageFactory; class CardFactory { protected $imageFactory; public function __construct(ImageFactory $imageFactory) { $this->imageFactory = $imageFactory; } public function create($input, $prefix = '') { $card = Card::create( array( 'name' => $input['name'] ) ); $this->imageFactory->make( $input, $card, $prefix ); return $card; } public function modify($card, $input, $prefix = '') { $card = $card->update( array( 'name' => $input['name'] ) ); $this->imageFactory->modify( $card->image, $input, $card, $prefix ); return $card; } }
最后,该包还提供了一些可以使用的视图
data.blade.php
包含一个Twitter Bootstrap实现,允许您在页面上显示图像fields.blade.php
包含一个Twitter Bootstrap实现,可以包含在表单中创建和/或修改图像信息
以下示例显示了这两种情况的使用示例
{!! Form::open(array('url' => 'cards', 'method' => 'POST', 'id' => 'createCard', 'class' => 'form-horizontal', 'role' => 'form', 'files' => true)) !!} <div class="well well-large"> <div class='form-group {{ $errors->has('name') ? 'has-error' : '' }}'> {!! Form::label('name', 'Name:', array('class' => 'control-label col-lg-3')) !!} <div class="col-lg-6"> {!! Form::text('name', $input['name'], array('class' => 'form-control')) !!} {!! $errors->first('name', '<span class="help-block">:message</span>') !!} </div> </div> </div> @include('imageable::images/fields', array( 'prefix' => 'image_' )) <div class="action-button"> {!! Form::submit('Submit', array('class' => 'btn btn-primary')) !!} {!! HTML::linkRoute('cards.index', 'Cancel', array(), array('class' => 'btn btn-default')) !!} </div> {!! Form::close() !!}
fields.blade.php
文件默认假定两个变量
$input
:输入字段的默认值关联数组。必需键:title
、alt
$requiredFields
:用户必须填写的输入字段数组。如果字段的名称在数组中,则会在表单字段中添加一个required
属性,然后可以使用CSS(不包括在内)来向用户发出信号。
这两个变量都需要传递到视图中,才能使用默认视图。
<div class="row"> <div class="well well-large col-md-12"> <div class='col-md-10'> <div class='col-md-4'>Name:</div> <div class='col-md-8'>{{ $card->name }}</div> </div> </div> </div> @include('imageable::images/data', array('imageable' => $card))
使用这些视图并非必须才能利用本包的功能。然而,值得注意的是,这两个视图默认都利用了ixudra/translation包的功能。该ixudra/translation
包不是本包的要求,但必须通过composer引入才能利用默认提供的视图。
计划
- 提高对每个模型多个图片的支持
- 添加JavaScript库以改善用户体验
支持
通过Patreon支持我,帮助我进一步开发和维护这个包吧!!
许可
本包是开源软件,受MIT许可证许可。
联系方式
对于包的问题、错误、建议和/或功能请求,请使用Github问题系统,或提交一个pull request。提交问题时,请始终提供详细的解释,任何您获得的响应或反馈,可能相关的日志消息以及演示问题的源代码示例。如果没有这些,我可能无法帮助您解决问题。在提交问题或pull request之前,请查阅贡献指南。
对于任何其他问题,请随时使用以下凭证
Jan Oris(开发者)
- 电子邮件:jan.oris@ixudra.be
- 电话:+32 496 94 20 57