在Silex 2上制作第一个项目。 不知道如何从一个控制器为其他控制器提供变量。
$app -> get('links', function() use ($app) {
$foo="foo";
})
->bind('a1');
$app -> get ('/links/result/', function() use ($app) {
echo $foo;
})
->bind('b2');
如何为“b2”显示$ foo?
答案 0 :(得分:4)
如果您需要在两个控制器中执行某些操作,最好将其作为服务;然后它可用于两者。关于服务创建的Here's the Silex docs。
您需要先创建一个类:
class MyFirstService
{
public function getFoo()
{
return "foo";
}
}
然后将其注册为(共享)服务:
$app["my-first-service"] = $app->share(function () {
return new MyFirstService();
});
最后你可以使用它:
$app->get('links', function() use ($app) {
$foo = $app["my-first-service"]->getFoo();
})->bind('a1');
$app->get ('/links/result/', function() use ($app) {
$foo = $app["my-first-service"]->getFoo();
})->bind('b2');
上述链接文档页面还说明了如何访问您的其他服务。
答案 1 :(得分:0)
因为您正在使用:
function() use ($app) {
在控制器闭包中 - 您可以使用$ app作为全局变量容器,如:
$app['my_vars']['foo']='bar';
以完美的方式,您应该将数据模态类用于变量存储。