Php Hello应为类型为“的参数”;字符串“&引用;bundle\FrontBundle\Form\Type\PrestationType“;鉴于
我测试了我的应用程序,发现了这个错误 请帮忙 我的模板Php Hello应为类型为“的参数”;字符串“&引用;bundle\FrontBundle\Form\Type\PrestationType“;鉴于,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我测试了我的应用程序,发现了这个错误 请帮忙 我的模板 namespace bundle\FrontBundle\Form\Type; use Doctrine\ORM\EntityRepository; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
namespace bundle\FrontBundle\Form\Type;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class PrestationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('path')
->add('alt')
->add('save', 'submit');
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'bundle\FrontBundle\Entity\Image',
));
}
public function getName()
{
return 'prestation';
}
}
我的实体
<?php
namespace bundle\FrontBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Image
*
* @ORM\Table(name="image")
* @ORM\Entity(repositoryClass="bundle\FrontBundle\Repository\ImageRepository")
*/
class Image
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="path", type="string", length=255)
*/
protected $path;
/**
* @var string
*
* @ORM\Column(name="alt", type="string", length=255)
*/
protected $alt;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
}
null,数组())
在/Users/sylva/garage/vendor/symfony/symfony/src/symfony/Component/Form/FormFactory.php中
第39行
at Symfony\Component\Form\FormFactory->create(object(PrestationType),
null,数组())
在/Users/sylva/garage/vendor/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Controller/Controller.php中
第285行
at Symfony\Bundle\FrameworkBundle\Controller\Controller->createForm(object(PrestationType))
in /Users/sylva/garage/src/bundle/FrontBundle/Controller/FrontController.php
第19行
at bundle\FrontBundle\Controller\FrontController->indexAction(object(Request))
in line
at call_user_func_array(array(object(FrontController), 'indexAction'), array(object(Request)))
in /Users/sylva/garage/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php
第139行
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request),
"1")
在/Users/sylva/garage/vendor/symfony/symfony/src/symfony/Component/HttpKernel/HttpKernel.php中
第62行
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1',
(对)
在/Users/sylva/garage/vendor/symfony/symfony/src/symfony/Component/HttpKernel/Kernel.php中
第169行
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
in /Users/sylva/garage/web/app_dev.php line 30
thanx guy$this->createForm()希望第一个参数是要实例化的表单的类名
替换:
$form = $this->createForm(new PrestationType());
与
考虑到在处理Symfony表单时您需要图像表单并使用Symfony版本,并且由于我使用的是HttpFoundationExtension,所以我不得不向它添加相关的工厂,因此从
$formFactory = Forms::createFormFactory();
到
如这里所写
与HttpFoundation组件的集成
如果使用HttpFoundation组件,则应将HttpFoundation扩展添加到表单工厂:
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
use Symfony\Component\Form\Forms;
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new HttpFoundationExtension())
->getFormFactory();
现在,在处理表单时,可以将请求对象传递给handleRequest():
它是一种表达形式还是一种形象?
// for PHP 5.5+
$form = $this->createForm(PrestationType::class);
// for older versions
$form = $this->createForm('bundle\FrontBundle\Form\Type\PrestationType');
namespace bundle\FrontBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use bundle\FrontBundle\Form\Type\ImageType;
use bundle\FrontBundle\Entity\Image;
class FrontController extends Controller
{
public function indexAction(Request $request)
{
$image = new Image();
$form = $this->createForm(new ImageType(), $image);
$form->handleRequest($request);
if ($form->isValid()) {
// Your code... e.g persist & flush Entity...
return $this->redirectToRoute('task_success');
}
return $this->render('FrontBundle::index.html.twig', array('form' => $form->createView()));
}
/.../
}
namespace bundle\FrontBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ImageType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('path')
->add('alt')
->add('save', 'submit');
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'bundle\FrontBundle\Entity\Image'
]);
}
public function getName()
{
return 'image';
}
}
$formFactory = Forms::createFormFactory();
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new HttpFoundationExtension())
->getFormFactory();
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
use Symfony\Component\Form\Forms;
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new HttpFoundationExtension())
->getFormFactory();
$form->handleRequest($request);