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 $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 runWithRequest(ActionRequest $request) { if (!$request->getActionName()) { throw new InvalidActionNameException(""); } if (!Utils::validateActionName($request->getActionName())) { throw new InvalidActionNameException("Invalid action name: " . $request->getActionName() . "."); } return $this->run($request->getActionName(), $request->getArguments(), $request); }
public function testInvalidActionName() { $request = new ActionRequest(array('__action' => 'bb_fjeijfe', '__ajax_request' => true, 'account' => '*****@*****.**', 'password' => md5('qwer1234'))); $this->assertEquals(1, $request->isInvalidActionName()); }