2

我需要parameters.ini从表单访问。

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

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

将其传递给控制器​​:

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

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

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

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

谢谢!

4

3 回答 3

2

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

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

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...
  }
}
于 2012-05-16T13:55:57.333 回答
0

Define your form as a service then pass parameters to it using the %parameter% notation. Your controllers can then just grab the service without needing to know anything about the initialization process.

The technique is also very useful for setting entity managers and other dependencies.

于 2012-05-17T12:13:45.463 回答
0

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

参数.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}}
于 2016-05-10T06:01:40.157 回答