问题描述
如何检测新图像是否已从后端表单上传到图库,以便在保存之前可以进行操作。
我已经尝试了以下方法,但是没有用:
<?PHP namespace Author\Plugin\Models;
use Model;
class ModelName extends Model
{
public $attachMany = [
'gallery' => 'System\Models\File',];
public function beforeSave()
{
if (Input::hasFile('gallery')) {
trace_log('new files');
} else {
trace_log('no new files');
}
}
}
解决方法
您可以使用此代码来调整模型图像的大小
使用不同的绑定方式有点棘手。
您可以在插件的
中使用此代码plugin.php's boot method
use October\Rain\Database\Attach\Resizer;
// .. other code ...
public function boot() {
\Hardik\SoTest\Models\Item::extend(function($model) {
// for create time only
$model->bindEvent('model.beforeCreate',function() use ($model) {
$records = \October\Rain\Database\Models\DeferredBinding::where([
'master_type' => 'Hardik\SoTest\Models\Item',// <- REPLACE WITH YOUR MODEL(ModelName)
"master_field" => "picture",// <- REPLACE WITH ATTACHEMNT MODEL (gallery)
"slave_type" => "System\Models\File","session_key" => post('_session_key')
])->get();
foreach($records as $record) {
$fileRecord = \System\Models\File::find($record->slave_id);
// code to resize image
$width = 100;
$height = 100;
$options = []; // or ['mode' => 'crop']
// just in place resize image
Resizer::open($fileRecord->getLocalPath()) // create from real path
->resize($width,$height,$options)
->save($fileRecord->getLocalPath());
}
});
});
}
如有疑问,请发表评论。