Command-Line Interface¶
Running app/console lists all commands available. The following commands including Doctrine Migrations
for creating and migrating database tables are supported out of the box:
| Command | Description |
|---|---|
| migrations:execute | Execute a single migration version up or down manually |
| migrations:generate | Generate a blank migration class |
| migrations:migrate | Execute a migration to a specified version or the latest available version |
| migrations:status | View the status of a set of migrations |
| migrations:version | Manually add and delete migration versions from the version table |
| database:create | Create the database configured in app/config/parameters.yml |
| database:drop | Drop the database configured in app/config/parameters.yml |
| database:insert-fixtures | Insert database fixtures for testing (see app/db/fixtures/) |
| user:create | Create a new user |
| user:delete | Delete a user |
| user:reset-password | Send password reset email to a user |
Configuration¶
All commands are configured as service in app/config/console.yml:
Example
command.user.reset-password: class: App\Command\UserResetPasswordCommand arguments: - 'user:reset-password' - "@service.mail" - "@model.user" - "@twig"
Development¶
To develop a custom command, simply create a new class in src/Command/, configure it as service and
add it to the console application:
Example
app: class: Symfony\Component\Console\Application calls: - [ add, [ "@command.user.reset-password" ] ]
Symfony Console has a great documentaion, in case you haven't used it yet. You can also study our examples to get a better understanding.
Example
<?php namespace App\Command; use App\Service\Mail; use App\Model\User; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class UserResetPasswordCommand extends CommandAbstract { protected $mail; protected $user; public function __construct($name, Mail $mail, User $user) { $this->mail = $mail; $this->user = $user; parent::__construct($name); } protected function configure() { $this->setDescription('Send password reset email to a user'); $this->addArgument('email', InputArgument::REQUIRED, 'E-Mail'); parent::configure(); } protected function execute(InputInterface $input, OutputInterface $output) { $email = $input->getArgument('email'); $user = $this->user->findByEmail($email); $this->mail->passwordReset($user); } }