This forum has moved to a new location and is in read-only mode. Please visit talk.octobercms.com to access the new location.
I try to extend the Rainlab.Pages plugin with a fileupload functionality:
use RainLab\Pages\Classes\Page as PageController;
public function boot() {
Event::listen('backend.form.extendFields', function ($widget) {
if (
!$widget->getController() instanceof \RainLab\Pages\Controllers\Index ||
!$widget->model instanceof PageController
) {
return;
}
$widget->model->attachMany = [
'attachments' => 'System\Models\File', 'order' => 'sort_order'
];
$widget->addTabFields([
'attachments' => [
'tab' => 'Attachments',
'label' => 'Files',
'type' => 'fileupload'
]
]);
});
}
But the model seems not to have the methods which are required by the fileupload:
Call to undefined method RainLab\Pages\Classes\Page::hasRelation()
How can I add file attachment functionality to the Pages plugin?
Thanks, yes, I tried that option before, but the upload field simply didn't show up. But maybe it was only a wrong syntax.
Have you managed to make it work? I'm with the same inconvenience as you and I can not solve it.
You cannot use fileupload with Custom page fields
as it requires a database relation.
But you can write plugin to extend Page model.
In my Small Extensions plugin I have extended Blog Post model to add relation so you can grab the code and edit it to your needs.
So you have to:
-
Extend Page model in your plugins's boot() method like this:
$attachMany = ['photos' => 'System\Models\File', 'delete' => true];
-
Extend Page form with this fileupload field like this:
Event::listen('backend.form.extendFields', function($widget) { if (!$widget->getController() instanceof \RainLab\Pages\Controllers\Index) { return; } if (!$widget->model instanceof \RainLab\Pages\Classes\Page) { return; } $widget->addSecondaryTabFields([ 'photos' => [ 'label' => 'images', 'type' => 'fileupload', 'span' => 'full', 'deferredBinding' => 'true', 'tab' => 'Images' ] ]); }
This is just out of my head so please do not copy/paste this code. Look inside of my (or other) plugin and find your best solution!
Hi, did you manage to get this working? I don't know the proper syntax here's my code in Plugin.php
public function boot(){
RoomModel::extend(function ($model){
$model->attachMany = [
'room_gallery' => 'System\Models\File'
];
$model->addFillable([
'room_gallery',
]);
});
RoomsController::extendFormFields(function($form, $model, $context){
$form->addTabFields([
'room_gallery' => [
'label' => 'Images',
'type' => 'fileupload',
'mode' => 'image',
'tab' => 'Gallery'
],
]);
});
}
I'm not sure if this is the right syntax of declaring $attachMany
$model->attachMany = [
'room_gallery' => 'System\Models\File'
];
Thanks in advance.
1-6 of 6