Thursday, March 5, 2015

Symfony 2 hari 21: Membuat command line

Artikel ini dirunut berdasarkan Jobeet Tutorial, yang dibuat oleh Fabien Potencier, untuk Symfony 1.4.

Membuat Symfony 2 command

Kita dapat membuat Symfony 2 command untuk dijalankan melalui terminal. Buat file bernama JobeetUsersCommand.php di dalam folder command, lalu tambahkan code berikut.

src/Ibw/JobeetBundle/Command/JobeetUsersCommand.php

namespace Ibw\JobeetBundle\Command;

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Ibw\JobeetBundle\Entity\User;

class JobeetUsersCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this
            ->setName('ibw:jobeet:users')
            ->setDescription('Add Jobeet users')
            ->addArgument('username', InputArgument::REQUIRED, 'The username')
            ->addArgument('password', InputArgument::REQUIRED, 'The password')
        ;
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $username = $input->getArgument('username');
        $password = $input->getArgument('password');

        $em = $this->getContainer()->get('doctrine')->getManager();

        $user = new User();
        $user->setUsername($username);
        // encode the password
        $factory = $this->getContainer()->get('security.encoder_factory');
        $encoder = $factory->getEncoder($user);
        $encodedPassword = $encoder->encodePassword($password, $user->getSalt());
        $user->setPassword($encodedPassword);
        $em->persist($user);
        $em->flush();

        $output->writeln(sprintf('Added %s user with password %s', $username, $password));
    }
}


=========================================

Command tersebut jika dijalankan akan menjalankan perintah untuk menambahkan user baru ke dalam database User. Jalankan perintah berikut untuk menambahkan data user ke dalam database

php app/console ibw:jobeet:users admin admin
 
Maka ketika kamu membuka tabel User kamu akan menemukan satu user baru yang baru saja kamu masukan.

No comments:

Post a Comment