Skip to content

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);
    }
}