Forms 无法加载类型“;“文本”;在第91行的vendor/symfony/symfony/src/symfony/Component/Form/FormRegistry.php中
我使用的是Symfony标准版,在我将其更新到3.0.X-dev之前,一切都在Symfony2.X版本中运行 即使在较新的版本中,除了在控制器中出现错误的页面外,所有内容都正常工作: 无法加载类型“text”500内部服务器错误- 无效辩论例外Forms 无法加载类型“;“文本”;在第91行的vendor/symfony/symfony/src/symfony/Component/Form/FormRegistry.php中,forms,symfony,Forms,Symfony,我使用的是Symfony标准版,在我将其更新到3.0.X-dev之前,一切都在Symfony2.X版本中运行 即使在较新的版本中,除了在控制器中出现错误的页面外,所有内容都正常工作: 无法加载类型“text”500内部服务器错误- 无效辩论例外 在vendor/symfony/symfony/src/symfony/Component/Form/FormRegistry.php中 第91行 在vendor/symfony/symfony/src/symfony/Component/Form/Fo
$form = $this->createFormBuilder()
->add("flag","text")
->add("validate","button")
->getForm();
即使我删除了第一个添加(“标志”、“文本”),错误也会切换到:
无法加载类型“按钮”
因此我认为问题在于方法getForm()
。我说方法createFormBuilder()
需要一个参数,所以我试图传递一个对象标志,它有许多参数(标志、验证等)
这个问题没有改变,就像这个版本中的语法被改变了一样,但是当我验证时,我没有发现我的语法有任何问题
表单的版本是3.0-dev。我在github项目中验证了它,这些文件是最新的。我曾经
composer update
我删除了缓存和日志文件,但问题仍然存在
感谢您的帮助,我的英语很差,对此表示歉意。CarlosGranados所说的
阅读UPGRADE-3.0.md
是指阅读一个文件,该文件告诉您如何将代码从2.x改为3.0,而不是如何升级symfony代码库。不幸的是,它没有提到如何处理这个表单问题
[UPGRADE-2.8.md]中介绍了您将面临的问题(https://github.com/symfony/symfony/blob/2.8/UPGRADE-2.8.md)
这是由于表单名称文本
/按钮
被弃用,取而代之的是它们的完全限定类名(FQCN)
从升级到2.8.md
类型名称已弃用,将在Symfony 3.0中删除。您不应按名称引用类型,而应改为按其完全限定类名(FQCN)引用类型。对于PHP 5.5或更高版本,您可以使用“class”常量:
之前:
$form = $this->createFormBuilder()
->add('name', 'text')
->add('age', 'integer')
->getForm();
之后:
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
$form = $this->createFormBuilder()
->add('name', TextType::class)
// or ->add('name', Symfony\Component\Form\Extension\Core\Type\TextType)
->add('age', IntegerType::class)
// or ->add('age', Symfony\Component\Form\Extension\Core\Type\IntegerType)
->getForm();
。。。接下来,它会告诉你更多…我们的Web服务器仍然是PHP5.3,所以我必须为symfony3找到解决办法,因为我不能在我们的实时服务器上使用TextType::class 通过将常量设置为类引用,可以最小化大型窗体上的代码:
//use Symfony\Component\Form\Extension\Core\Type\EmailType;
//use Symfony\Component\Form\Extension\Core\Type\TextType;
const textType = 'Symfony\Component\Form\Extension\Core\Type\TextType';
const emailType = 'Symfony\Component\Form\Extension\Core\Type\EmailType';
class ProfileType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username', textType, array('label' => 'Username'))
->add('address1', textType, array('label' => 'Address1'))
->add('address2', textType, array('label' => 'Address2'))
->add('postcode', textType, array('label' => 'Postcode'))
;
}
这对我有用 请注意,3.0分支的文档不在您发送的链接中,而是在此处:。您可以使用页面右上角的下拉列表更改文档的版本。另外,请务必阅读Symfony安装中的UPGRADE-3.0.md文档,以获得升级到3.0所需的更改列表。谢谢您的回答,是的,我指的是此链接,但它是相同的。我没有在composer中升级我的项目,我已经下载了symfony的主版本(3.0.x-dev),并将我的项目放在了src中。然后我用composer安装并更新了所有内容,因此我没有升级到-3.0.md。除了这个页面,我所有的页面都可以正常工作。谢谢你分享我的页面。我刚刚用TextareaType修改了几行,比如TextType和TextareaType,还有更多,但是非常感谢你的帮助@qoopmao