当我创建表单时,我正在设置上面的URL,并希望在用户提交表单时收到相同的URL。现在,如何在我的控制器中检查上面的URL是否完整?有坏人搞砸网址!例如虽然期待21我可能会意外地得到69!
FORM
<form
action="/local/sym/web/app_dev.php/brands/independent/update/process/21"
name="brands"
method="post">
ROUTER条目:
pattern: /brands/independent/update/process/{id_from_url}
CONTROLLER方法
public function processAction(Request $request, $id_from_url)
{
if ($id_from_url != ?????)
{
exit('You are a bad guy!');
}
}
答案 0 :(得分:0)
第一种方式
在routing.yml
store_product_brands:
pattern: /brands/independent/update/process/{id}
defaults: { _controller: StoreBundle:Products:brand }
methods: [POST]
requirements:
id: \d+
通过这种方式,如果您输入以下内容,Symfony会抛出异常:
/brands/independent/update/process/not_a_number
No route found for "POST /brands/independent/update/not_a_number"
第二种方式
在您的控制器中
public function processAction(Request $request, $id)
{
if (!is_numeric($id))
{
throw $this->createNotFoundException('Brand does not exists.');
}
$brand = $this->getDoctrine()
->getRepository('StoreBundle:Brands')
->findOneById($id);
if (!$brand)
{
throw $this->createNotFoundException('Brand does not exists.');
}
// ..
}
通过这种方式,您可以更好地控制要向用户显示的内容