loilo / contao-exec-bundle
Execute Contao-related PHP code directly from the console
Installs: 18
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 0
Open Issues: 0
Type:contao-bundle
Requires
- php: >= 7.1
- contao/core-bundle: ^4.3
- loilo/lowlight: ^2.0
- psy/psysh: 0.7.*|0.8.*|0.9.*|0.10.*
Requires (Dev)
Suggests
- loilo/contao-illuminate-database-bundle: Enables easy database querying and model manipulation
This package is auto-updated.
Last update: 2024-10-24 07:25:17 UTC
README
This package allows to execute PHP code in the context of a Contao application, directly from the command line.
It provides two ways to do so:
-
A PsySH-based REPL for tinkering around or getting some quick insight into the state of your Contao project.
-
An
eval
command to get results of a program in a certain data exchange format — useful for getting access to data from outside of Contao.
Installation
composer require loilo/contao-exec-bundle
Usage
REPL
You can open up the REPL with the debug:repl
command:
vendor/bin/contao-console debug:repl
This will throw you into a nice REPL with the Contao framework loaded, all models, DCAs etc. available.
Also, the db()
helper will be loaded into the namespace automatically if you have it installed, so you can do some quick fiddling right away:
// Get the URL to the newest page db()->from('page')->asModel()->orderBy('id', 'desc')->first()->getAbsoluteUrl()
As usual, all options are available via
vendor/bin/contao-console help debug:repl
Eval
The contao:eval
command takes some PHP code, passes it to the REPL and outputs the result.
If you're using the terminal manually, you probably want to use debug:repl
instead. However, contao:eval
can be a great tool to access Contao data from other processes (e.g. Node.js) etc.
Therefore, it does not only have the default dump
output formatting for human-readable data but also some others, including json
:
# Get ID and title of the newest page as a JSON object # This example requires the loilo/contao-illuminate-database-bundle to be installed vendor/bin/contao-console contao:eval 'db()\ ->from("page")\ ->select("id", "title")\ ->orderBy("id", "desc")\ ->first()'\ --format json\ --no-ansi # > {"id":1,"title":"Home"}
Again, use vendor/bin/contao-console help contao:eval
to see what's possible with different options.