我正在尝试制作销售商品页面。表单和页面呈现 我不完全确定我做错了什么,但当我点击提交时出现错误500.可能存在语法错误,我没有抓到
我将参数设置为image_directory:'%kernel.root_dir%/ .. / web / images'
class SellPage extends Controller
{
/**
* @Route("/SellItem", name="Sell_Item")
*/
public function goToSellPage(Request $request)
{
$item = new Item();
$sellForm = $this->createFormBuilder($item)
->setMethod("POST")
->add('name', TextType::class, array('label' => 'Item Name: ', 'attr' => array('class' => 'form-control form-group')))
->add('price', TextType::class, array('label' => 'Price: ', 'attr' => array('class' => 'form-control form-group')))
->add('image', FileType::class, array('label' => 'Image Upload Click Here', 'attr' => array('class' => 'btn btn-lg form-group')))
->add('description', TextareaType::class, array('label' => 'Description', 'attr' => array('class' => 'form-control form-group')))
->add('category', EntityType::class, array('class' => 'AppBundle\Entity\Category', 'choice_label' => 'name', 'label' => 'Category', 'attr' => array('class' => 'form-control form-group')))
->add('seller', EntityType::class, array('class' => 'AppBundle\Entity\User', 'choice_label' => 'userName', 'label' => 'Seller', 'attr' => array('class' => 'form-control form-group')))
->add('save', SubmitType::class, array('label' => 'Submit', 'attr' => array( 'class' => 'btn btn-lg btn-success form-group')))
->getForm();
$sellForm->handleRequest($request);
if ($sellForm->isValid())
{
$formData = $request->request->get('sellForm');
$item->setName($formData['name']);
$item->setPrice($formData['price']);
$item->setDescription($formData['description']);
$repository = $this->getDoctrine()->getManager()->getRepository('AppBundle:User');
$item->setSeller($repository->getUserByName($item->getSeller()));
$item->setBuyer($repository->find(2));
$fileName = 'http://sfsuse.com/~sp17g01/sp17g01/web/images/'.md5(uniqid()).$sellForm['image']->getData()->guessExtension();
$sellForm['image']->getData()->move(
$this->getParameter('image_directory'),
$fileName);
$item->setImage($fileName);
$catRepository = $this->getDoctrine()->getManager()->getRepository('AppBundle:Category');
$item->setCategory($catRepository->find(1));
$em = $this->getDoctrine()->getManager();
$em->persist($item);
$em->flush();
}
return $this->render('default/SellItem.html.twig',['sellForm' => $sellForm->createView(),]);
}
}
答案 0 :(得分:0)
在你的parameters.yml文件中使用:
image_directory: images
而且我还认为你需要像这样更改$filename
:
$fileName = 'images/'.md5(uniqid()).$sellForm['image']->getData()->guessExtension();
如果您遇到错误,最好将app_dev.php
附加到您的symfony应用URL(调试网址)。例如,在localhost上使用:
https://bloggeek.me/twilio-acquires-kurento/
然后通过附加路线指向路线,例如:
然后您将获得更多调试信息。我建议使用deubg URL进行开发使用。
答案 1 :(得分:0)
尝试使用这种结构:
if ($form->isSubmitted()) {
if ($form->isValid()) {
$img = $user->getImg();
if ($img !== null) {
$img = $user->getImg();
$fileName = md5(uniqid()).'.'.$img->getExtension();
$img->move(
$this->getParameter('user_images'),
$fileName
);
$user->setImg($fileName);
}
}
}