在我的config.yml中我有这个:
parameters:
gitek.centro_por_defecto: 1
Run Code Online (Sandbox Code Playgroud)
现在,我想使用表单从我的控制器更改此值,如下所示:
public function seleccionAction(Request $request)
{
$entity = new Centro();
$form = $this->createForm(new SeleccionType(), $entity);
$centro = $this->container->getParameter('gitek.centro_por_defecto');
if ($this->getRequest()->getMethod() == 'POST') {
$form->bind($this->getRequest());
if ($form->isValid()) {
$miseleccion = $request->request->get('selecciontype');
$this->container->setParameter('gitek.centro_por_defecto', $miseleccion['nombre']);
// return $this->redirect($this->generateUrl('admin_centro'));
}
}
return $this->render('BackendBundle:Centro:seleccion.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
Run Code Online (Sandbox Code Playgroud)
我Impossible to call set() on a frozen ParameterBag.一直都在收到错误.任何帮助或线索?
编译后,您无法修改Container,这是在调用控制器之前完成的.
DIC参数用于配置目的 - 不是全局变量的替代.此外,您似乎希望坚持某种永久性修改.在这种情况下,考虑使用会话,如果它是每用户修改或持久化(例如进入DB),如果它应该是应用程序范围的.
如果需要修改DIC参数或服务,可以使用编译器传递来完成.有关如何编写自定义编译器传递的更多信息,请访问:http: //symfony.com/doc/master/cookbook/service_container/compiler_passes.html
| 归档时间: |
|
| 查看次数: |
10499 次 |
| 最近记录: |