Pimcore bundle for copying documents between environments
Table of Contents
This module was tested on:
- Pimcore 6.1.2 @ PHP 7.3
- Pimcore 6.4.2 @ PHP 7.3
- Pimcore 6.5.3 @ PHP 7.3
Install latest version:
composer require divante-ltd/pimcore-document-copier
Add routing to app/config/routing.yml
:
_documentcopier:
resource: "@DocumentCopierBundle/Resources/config/pimcore/routing.yml"
Enable the bundle:
bin/console pimcore:bundle:enable DocumentCopierBundle
Import example documents:
bin/console document-copier:import --path=/codecept-document-copier/foo/bar --root=vendor/divante/pimcore-document-copier/app/Resources/test_root --recursiveDepth=2
View imported documents in Pimcore admin panel:
- In document tree, right-click the document that you would like to export or import.
- If the document you're importing doesn't exist, first create an empty one with the exact same path and key.
- It is possible to import only a selected document (for example
/codecept-document-copier/foo/bar
with depth0
) even if uploaded ZIP file contains much more assets and documents (for example the entire/codecept-document-copier
exported at depth10
).
Download a zipped export of selected document with or without its dependencies (other documents & assets).
Import a ZIP file with or without the dependencies.
Commands below are run whenever user requests import / export from admin panel.
You can also run these commands directly. For example, you may keep your documents in repository and import them during migrations.
bin/console document-copier:export --path=PATH --root[=ROOT] --recursiveDepth[=RECURSIVEDEPTH]
Options:
--path=PATH
Document path
Full path to the document as in admin panel--root[=ROOT]
Resources root [default:app/Resources
]
Exported JSONs and assets will be saved to this directory
Leave this parameter as default unless you need to keep different versions of documents--recursiveDepth[=RECURSIVEDEPTH]
Max depth of dependency tree [default:0
]
Keep this number small to avoid accidentally overwriting too many documents
If0
, no dependencies (documents & assets) will be exported
If1
, only direct dependencies will be exported (child documents, as well as documents & assets referenced in the document)
If greater than1
, dependencies and their dependencies will be exported recursively
bin/console document-copier:import --path=PATH --root[=ROOT] --recursiveDepth[=RECURSIVEDEPTH]
Options:
--path=PATH
Document path
Same as in export command--root[=ROOT]
Resources root [default:app/Resources
]
JSONs and assets will be loaded from this directory.
File structure in this directory must reflect document and asset trees as in admin panel.
Leave this parameter as default unless you need to keep different versions of documents--recursiveDepth[=RECURSIVEDEPTH]
Max depth of dependency tree [default:0
]
Same as in export command
Data objects are not handled by this package. Use other methods like CSV export instead.
Features listed below have not been implemented as of yet (pull requests are welcome!)
Unsupported document types:
- newsletter
- printpage
- printcontainer
Unsupported editable types:
- embed
- relation
- relations
- renderlet
- video
Unsupported document settings:
- Content-Master Document
- Target Groups
- HTML-Tags
Run tests locally:
vendor/bin/codecept run -c tests/codeception.dist.yml
If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.
Pimcore Document Copier source code is completely free and released under the GNU General Public License v3.0.
This module respects all Pimcore 6 code quality rules and our own PHPCS and PHPMD rulesets.
We are a Software House from Europe, existing from 2008 and employing about 150 people. Our core competencies are built around Magento, Pimcore and bespoke software projects (we love Symfony3, Node.js, Angular, React, Vue.js). We specialize in sophisticated integration projects trying to connect hardcore IT with good product design and UX.
We work for Clients like INTERSPORT, ING, Odlo, Onderdelenwinkel and CDP, the company that produced The Witcher game. We develop two projects: Open Loyalty - an open source loyalty program and Vue.js Storefront.
We are part of the OEX Group which is listed on the Warsaw Stock Exchange. Our annual revenue has been growing at a minimum of about 30% year on year.
Visit our website divante.com for more information.