我正在努力解决这个小问题。 我有一个允许将数据修改为数据库的表单,但是当我单击提交按钮时(即使它更改了值),它会显示错误: 缺少一些必需参数(“名称”)以生成路径“update_page”的URL。 500内部服务器错误 - MissingMandatoryParametersException
有人能帮助我吗?
这是我的控制者:
class updateElementController extends Controller
{
public function updateAction($name)
{
$request = $this->get('request');
$ingrediente = $this->getDoctrine()
->getRepository('MyCrudBundle:Elements')
->findOneByName($name);
$em = $this->getDoctrine()->getManager();
$elementsmod = new Elements();
$formupdate = $this->createFormBuilder($elementsmod)
->add('name', 'text')
->add('quantity', 'text')
->add('Change element', 'submit')
->getForm();
$formupdate->handleRequest($request);
if ($formupdate->isValid()) {
$newval = $formupdate->getData();
// change "entity" / object values we want to edit
$namevalue= $newval->getName();
$quantityvalue= $newval->getQuantity();
$element->setName($namevalue);
$element->setQuantity($quantityvalue);
// call to flush that entity manager from which we create $item
$em->flush();
return new RedirectResponse($this->generateUrl('update_page'));
}
return $this->render('MyCrudBundle:Default:index.html.twig', array(
'form' => $formupdate->createView(),
));
}
}
我的路线:
update_page:
pattern: /updatePage/{name}
defaults: { _controller: MyCrudBundle:updateElement:update }
(如果你需要代码的其他部分,请告诉我,我是初学者,而且肯定会写得非常糟糕)
答案 0 :(得分:0)
我建议两个选择:
如果您的路由中不是必需的name
,您可以按以下方式更改路由
update_page:
pattern: /updatePage/{name}
defaults: { _controller: MyCrudBundle:updateElement:update, name: null }
如果生成的网址必须name
,则需要将name
作为模式参数传递
if ($formupdate->isValid()) {
$newval = $formupdate->getData();
$namevalue= $newval->getName();
$quantityvalue= $newval->getQuantity();
$element->setName($namevalue);
$element->setQuantity($quantityvalue);
$em->flush();
return new RedirectResponse($this->generateUrl('update_page', array('name' => $name)));
}
根据您在控制器中的查询选择,$name
是强制性的,我建议尝试第二个