【问题标题】:Symfony 2 forms - access parameters.ini from the form classSymfony 2 表单 - 从表单类访问 parameters.ini
【发布时间】:2012-05-16 13:27:38
【问题描述】:

我需要从表单访问parameters.ini

当然我可以从控制器访问:

$myVal = $this->container->getParameter('my_val');

将其传递给控制器​​:

$demoForm = $this->createForm(new demoFormType($myVal), $demoObject);

并以保存传递给构造函数的值的形式(当然,应该显式实现)。

但是,这个表单在多个控制器中使用,因此从表单类中以某种“魔术”方式简单地访问会更加简洁。

有可能吗???我找不到任何答案。

谢谢!

【问题讨论】:

    标签: forms parameters symfony


    【解决方案1】:

    我不确定按照您建议的方式进行操作是否最好。表单不应该像那样被配置绑定。

    相反,也许您可​​以创建一个新的控制器来继承。

    namespace Your\Bundle\Controller;
    
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Your\Bundle\Form\Type\demoFormType;
    
    class FormAwareController extends Controller
    {
      protected function createDemoForm( $demoObject )
      {
        $myVal = $this->container->getParameter( 'my_val' );
        return $this->createForm( new demoFormType( $myVal, $demoObject ) );
      }
    }
    

    然后,在你需要的地方扩展这个类

    namespace Your\Bundle\Controller;
    
    class SampleController extends FormAwareController
    {
      public function indexAction()
      {
        $demoObject = new stdClass; // or whatever
        $form = $this->createDemoForm( $demoObject );
    
        // etc...
      }
    }
    

    【讨论】:

    • S2 中的表单感知控制器?可能需要重新考虑一下。
    • 我已经考虑过了。怎么办?很明显,form-as-a-service 选项更好,但我不知道您希望通过像这样简单的 cmets 从我那里得到什么样的反馈。
    • 表单与控制器不同,因此表单不应继承自控制器 ...
    • @Jay 好吧,这是一个老问题和一个老答案,但即使考虑到 我(现在)对 Symfony 平台更加熟悉,作为记录,这个答案建议创建一个从控制器继承的表单。
    【解决方案2】:

    Define your form as a service 然后使用 %parameter% 表示法将参数传递给它。然后,您的控制器可以直接获取服务,而无需了解有关初始化过程的任何信息。

    该技术对于设置实体管理器和其他依赖项也非常有用。

    【讨论】:

      【解决方案3】:

      这是发送parameters.ini值以在Symfony2中查看的过程

      parameters.ini

      app_name = "Application Name";
      

      在控制器中

      $data = array(
      app_name =>$this->container->getParameter( 'app_name' );
      )
      return $this->render('Bundle:Home:index.html.twig', $data);
      

      在视图中

      {{app_name}}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        相关资源
        最近更新 更多