2011-06-19 8 views
3

phpシェルを使用してSymfony2スクリプトを起動するにはどうすればよいですか?私は、コマンドを使用して、コントローラファイルを直接実行することはできません。phpシェルを使用するSymfony2スクリプト

php FController.php 

コントローラのパスが

domain.com/web/app_dev.php/fcontroller 

が、私はこのスクリプトを実行するために、Symfony2のコンソールを使用する必要がありますでしょうか?

答えて

3

コンソールコマンドは正しいものです。その目的は、コマンドラインからアプリケーションへのゲートウェイになることです。コンソールクックブックの章を使用している場合は、コンソールコマンドの設定は非常に簡単です:

http://symfony.com/doc/2.0/cookbook/console.html

あなたは、技術的にはあなたがRequestオブジェクトを変更したことを除いて、ずっとあなたのフロントコントローラのように見えますPHPスクリプトを作成することができますあなたのコントローラを実行するためにWebパス(例えば/ foo/bar)を "偽造"するが、実際にはコンソールコマンドがこのためだけである。

幸運を祈る!

6

既に述べたように、コンソールコマンドを作成する必要があります。あなたのバンドルの1つに「Command」というディレクトリを作成します(バンドルはAppKernel.phpに登録する必要があります)。このディレクトリにクラスを作成すると、app/consoleを実行すると自動的にsymfonyが見つかります。

ここ

は簡単な例です:

<?php 
namespace Acme\FooBundle\Command; 

use Symfony\Bundle\FrameworkBundle\Command\Command, 
    Symfony\Component\Console\Input\InputOption, 
    Symfony\Component\Console\Input\InputInterface, 
    Symfony\Component\Console\Output\OutputInterface; 

class BarCommand extends Command 
{ 

    protected function configure() 
    { 
     $this 
      ->setName('foo:bar-cmd') 
      ->setDescription('Test command') 
      ->addOption('baz', null, InputOption::VALUE_NONE, 'Test option'); 
     ; 
    } 

    /** 
    * Execute the command 
    * The environment option is automatically handled. 
    */ 
    protected function execute(InputInterface $input, OutputInterface $output) 
    { 
     $output->writeln('Test command'); 
    } 
} 

あなたは、その後でコマンドを実行できます。

$> app/console foo:bar-cmd 

などのオプションを渡す:

$> app/console foo:bar-cmd --baz 
関連する問題