public function register($kernel, $options = array()) { if (isset($options['DefaultFieldView'])) { Action::$defaultFieldView = $options['DefaultFieldView']; } $container = new ServiceContainer(); $generator = $container['generator']; $generator->registerTemplate('TwigActionTemplate', new TwigActionTemplate()); $generator->registerTemplate('CodeGenActionTemplate', new CodeGenActionTemplate()); $generator->registerTemplate('RecordActionTemplate', new RecordActionTemplate()); $generator->registerTemplate('UpdateOrderingRecordActionTemplate', new UpdateOrderingRecordActionTemplate()); $action = new ActionRunner($container); $action->registerAutoloader(); $kernel->action = function () use($options, $action) { return $action; }; $kernel->event->register('view.init', function ($view) use($action) { $view->args['Action'] = $action; }); $kernel->event->register('phifty.before_path_dispatch', function () use($kernel) { if (!ActionRequest::hasAction($_REQUEST)) { return; } $runner = $kernel->action; // get runner $kernel->event->trigger('phifty.before_action'); $strout = fopen("php://output", "w"); // If we found any ajax action, exit the application if ($runner->handleWith($strout, $_REQUEST, $_FILES)) { exit(0); } }); }
public function register($kernel, $options = array()) { $container = new ServiceContainer(); $generator = $container['generator']; $generator->registerTemplate('TwigActionTemplate', new TwigActionTemplate()); $generator->registerTemplate('CodeGenActionTemplate', new CodeGenActionTemplate()); $generator->registerTemplate('RecordActionTemplate', new RecordActionTemplate()); $generator->registerTemplate('UpdateOrderingRecordActionTemplate', new UpdateOrderingRecordActionTemplate()); $action = new ActionRunner($container); $action->registerAutoloader(); $kernel->action = function () use($options, $action) { return $action; }; $kernel->event->register('view.init', function ($view) use($action) { $view->args['Action'] = $action; }); $kernel->event->register('phifty.before_path_dispatch', function () use($kernel) { // check if there is $_POST['action'] or $_GET['action'] if (!isset($_REQUEST['__action'])) { return; } $runner = $kernel->action; // get runner $kernel->event->trigger('phifty.before_action'); $strout = fopen("php://stdout", "w"); $result = $runner->handleWith($strout, $_REQUEST, $_FILES); }); }
/** * @dataProvider roleProvider */ public function testRunnerWithMultiRoleInterface($roles, $resultType) { $container = new ServiceContainer(); $generator = $container['generator']; $generator->registerTemplate('RecordActionTemplate', new RecordActionTemplate()); $runner = new ActionRunner($container); $runner->registerAutoloader(); $runner->registerAction('RecordActionTemplate', array('namespace' => 'OrderBundle', 'model' => 'Order', 'types' => array(['prefix' => 'Create', 'allowed_roles' => ['user', 'admin']], ['prefix' => 'Update'], ['prefix' => 'Delete']))); $user = new TestUser(); $user->roles = $roles; $runner->setCurrentUser($user); $result = $runner->run('OrderBundle::Action::CreateOrder', ['qty' => '1']); ok($result); is($resultType, $result->type); }
public function register(Kernel $kernel, $options = array()) { $kernel->actionService = function () use($kernel, $options) { $container = new ServiceContainer(); $container['cache_dir'] = $kernel->cacheDir; if ($kernel->locale) { $container['locale'] = $kernel->locale->current; } if (isset($options['DefaultFieldView'])) { Action::$defaultFieldView = $options['DefaultFieldView']; } $generator = $container['generator']; $generator->registerTemplate('TwigActionTemplate', new TwigActionTemplate()); $generator->registerTemplate('CodeGenActionTemplate', new CodeGenActionTemplate()); $generator->registerTemplate('RecordActionTemplate', new RecordActionTemplate()); $generator->registerTemplate('UpdateOrderingRecordActionTemplate', new UpdateOrderingRecordActionTemplate()); return $container; }; $kernel->actionRunner = function () use($kernel) { $actionRunner = new ActionRunner($kernel->actionService); $actionRunner->registerAutoloader(); // $actionRunner->setDebug(); return $actionRunner; }; $kernel->action = function () use($kernel) { return $kernel->actionRunner; }; $kernel->event->register('view.init', function ($view) use($kernel) { $view['Action'] = $kernel->actionRunner; }); $kernel->event->register('phifty.before_path_dispatch', function () use($kernel) { if (!ActionRequest::hasAction($_REQUEST)) { return; } $runner = $kernel->action; // the new trigger for actions defined in Bundle::actions method $kernel->event->trigger('phifty.prepare_actions'); $kernel->event->trigger('phifty.before_action'); $strout = fopen('php://output', 'w'); // If we found any ajax action, exit the application if ($runner->handleWith($strout, $_REQUEST, $_FILES)) { exit(0); } }); }
public function testRunAndJsonOutput() { $container = new ServiceContainer(); $generator = $container['generator']; $generator->registerTemplate('RecordActionTemplate', new RecordActionTemplate()); $runner = new ActionRunner($container); $runner->registerAutoloader(); $runner->registerAction('RecordActionTemplate', array('namespace' => 'User', 'model' => 'User', 'types' => array(['prefix' => 'Create'], ['prefix' => 'Update'], ['prefix' => 'Delete']))); $result = $runner->run('User::Action::CreateUser', ['email' => 'foo@foo']); $this->assertNotNull($result); $json = $result->__toString(); $this->assertNotNull($json, 'json output'); $data = json_decode($json); $this->assertTrue($data->success); ok($data->data); ok($data->data->id); $results = $runner->getResults(); $this->assertNotEmpty($results); $this->assertNotNull($runner->getResult('User::Action::CreateUser')); $runner->setResult('test', 'test message'); is(true, $runner->hasResult('test')); $runner->removeResult('test'); is(false, $runner->hasResult('test')); }