dongyuluan7494 2013-03-03 02:05
浏览 25
已采纳

如何在yaml资源文件中将控制器用作服务

I'm using Silex Framework. I wrote a simple route resource loader that is used that way :

    $app->register( new RouteCollectionLoaderProvider);
    $app["mp.route_loader"]->append(array(
            array(
                    "type"=>"yaml",
                    "path"=>__DIR__."/Resources/routes/routes.yml",
                    "prefix"=>"/",
                )
    ));

the source code is here : https://github.com/Mparaiso/silex-extensions/blob/master/src/Mparaiso/Provider/RouteCollectionLoaderProvider.php

i'm able to load routes named the regular way ,for instance , in a yaml file

index:
  pattern: /
  defaults: {_controller: Controller\DefaultController::index }

but i'm unable to load controllers defined as services :

$app["my.controller"] = function(){ return new MyController;};

info:
  pattern: /info
  defaults: {_controller: my.controller:info }

what would it take to be able to use the controller as a service syntax in a resource file ?

thanks

  • 写回答

1条回答 默认 最新

  • douye4254 2013-03-03 16:21
    关注

    Silex ships with a ServiceControllerServiceProvider, which you can use to get controllers as services.

    $app->register(new Silex\Provider\ServiceControllerServiceProvider());
    
    $app['my.controller'] = $app->share(function ($app) {
        return new MyController($app['my.service']);
    });
    
    $app->get('/info', 'my.controller:info');
    

    This should work with your custom loader as well.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类