Php 覆盖核心Symfony2组件
好吧,说实话。不喜欢symfony决定对其核心文件做出的一些决定,所以我试图覆盖它们。比如说Php 覆盖核心Symfony2组件,php,symfony,Php,Symfony,好吧,说实话。不喜欢symfony决定对其核心文件做出的一些决定,所以我试图覆盖它们。比如说 Symfony/Component/Form/Extension/Core/Type/FieldType.php 如果FormView有父对象,我会尝试更改呈现的名称,因为它们会进行一些很酷的字符串格式化 我只是想让$fullName和$id都是$form->getName() 我认为您可以尝试构建自己的表单类型 您可以将自己的表单类型放入Bundle,使其具有类似(“TestBundle/Form/T
Symfony/Component/Form/Extension/Core/Type/FieldType.php
如果FormView有父对象,我会尝试更改呈现的名称,因为它们会进行一些很酷的字符串格式化
我只是想让$fullName
和$id
都是$form->getName()
我认为您可以尝试构建自己的表单类型 您可以将自己的表单类型放入Bundle,使其具有类似(“TestBundle/Form/Type”)的干净结构 在此字段类型中,您可以进行所需的更改 下面是一篇帮助性文章,它显示了如何创建自定义字段类型
这是一个简短的提示,我希望您能找到一个好的解决方案,并告诉我们它是否有效以及您是如何解决的。我认为您可以尝试构建自己的表单类型 您可以将自己的表单类型放入Bundle,使其具有类似(“TestBundle/Form/Type”)的干净结构 在此字段类型中,您可以进行所需的更改 下面是一篇帮助性文章,它显示了如何创建自定义字段类型
这是一个简短的提示,我希望您能找到一个好的解决方案,并能告诉我们它是否有效以及您是如何解决的。构建了一个帮助函数
public function fixForm(\Symfony\Component\Form\FormView $form)
{
foreach($form as &$child)
{
$name = $child->get('full_name');
$id = $child->get('id');
$matches = array();
preg_match('/^(?<form>.+)\[(?<ele>.+)\]/', $name, $matches);
if(isset($matches['ele']))
$child->set('full_name', $matches['ele']);
$matches = array();
preg_match('/^(?<first>.+)_(?<second>.+)/', $id, $matches);
if(isset($matches['second']))
$child->set('id', $matches['second']);
}
return $form;
}
public function fixForm(\Symfony\Component\Form\FormView$Form)
{
foreach($formas&$child)
{
$name=$child->get('full_name');
$id=$child->get('id');
$matches=array();
预匹配('/^(?.+)\[(?.+)\]/',$name,$matches);
if(isset($matches['ele']))
$child->set('full_name',$matches['ele']);
$matches=array();
preg_match(“/^(?.+)(?.+)/”,$id,$matches);
if(isset($matches['second']))
$child->set('id',$matches['second']);
}
返回$表格;
}
以及它的工作原理。当您需要修复表单时,只需调用此函数即可生成帮助函数
public function fixForm(\Symfony\Component\Form\FormView $form)
{
foreach($form as &$child)
{
$name = $child->get('full_name');
$id = $child->get('id');
$matches = array();
preg_match('/^(?<form>.+)\[(?<ele>.+)\]/', $name, $matches);
if(isset($matches['ele']))
$child->set('full_name', $matches['ele']);
$matches = array();
preg_match('/^(?<first>.+)_(?<second>.+)/', $id, $matches);
if(isset($matches['second']))
$child->set('id', $matches['second']);
}
return $form;
}
public function fixForm(\Symfony\Component\Form\FormView$Form)
{
foreach($formas&$child)
{
$name=$child->get('full_name');
$id=$child->get('id');
$matches=array();
预匹配('/^(?.+)\[(?.+)\]/',$name,$matches);
if(isset($matches['ele']))
$child->set('full_name',$matches['ele']);
$matches=array();
preg_match(“/^(?.+)(?.+)/”,$id,$matches);
if(isset($matches['second']))
$child->set('id',$matches['second']);
}
返回$表格;
}
以及它的工作原理。当您需要修复表单时,只需调用此函数不幸的是,我所做的更改需要对每个字段类型进行更改。我希望避免仅仅为了更改名称而重写所有字段类型。您有没有想过在Twig中解决这个问题?有一些方法可以自定义表单并更改模板中的字段。正如我上面所说的,在twig中进行此操作需要我更改所有的
表单小部件,我试图避免这种情况,不幸的是,我所做的更改需要对每个字段类型进行更改。我希望避免仅仅为了更改名称而重写所有字段类型。您有没有想过在Twig中解决这个问题?有一些方法可以自定义表单并更改模板中的字段。就像我上面所说的,在twig中做这件事需要我更改所有的表单小部件,我试图避免这种情况