php - 无法覆盖 Symfony 4 上 POST 请求中可选参数的默认值
问题描述
我从 Symfony 4.3 开始,我正在努力寻找如何在 POST 请求中使用可选参数。
在文档中它说我应该defaults
用来指定我的请求的可选参数。但是,Symfony 似乎一直忽略我的POST
参数并获取默认值。
class NewController extends AbstractController
{
/**
* @Route(
* "/app/new",
* name="app_new",
* methods={"POST"},
* defaults={"app_type":"teste", "name":"defaultVal", "phone":"", "url":""}
* )
*
* Creates new application authorization flow
*/
public function indexAction($app_type, $name, $phone, $url)
{
// $appType = $this->getParameter('app_type');
return new Response('Hello ' . $name . PHP_EOL);
}
}
当通过 POST 发送的任何参数被忽略时:
$ curl -X POST http://127.0.0.1:8000/app/new -d "name=John&app_type=45533"
退货
你好 defaultVal
我在这里做错了吗?
解决方案
您似乎混淆了不同的参数类型。
“路由”参数与“请求”参数不同。
您使用@Route
注释定义的是适当的路由参数。基本上,您可以将不同的路径段用作应用程序中的参数。
通常,像这样:
/blogpost/{id}
id
可以在您的应用程序控制器中注入的位置$id
。
在您的情况下,您正在为您甚至没有在路由定义中定义的路径段定义默认值......所以除了默认值之外,没有办法获得任何值。
您可以像这样重写您的控制器操作:
/**
* @Route(
* "/app/new",
* name="app_new",
* methods={"POST"})
*/
public function indexAction(Symfony\Component\HttpFoundation\Request $request)
{
$appType = $request->get('app_type', 'yourDefaultValue');
$name = $request->get('name', 'anotherDefaultValue');
$phone = $request->get('phone');
$url = $request->get('url');
return new Response('Hello ' . $name . PHP_EOL);
}
推荐阅读
- javascript - 有没有办法使用 chrome 开发者工具在我的 chrome 扩展中提供的屏幕截图 API?
- windows - 无法在主分区上设置恢复分区 ID
- python - 如何确保每个工作人员只使用一个 CPU?
- assembly - NASM - 创建文件或目录时如何设置权限
- php - 为什么在 Windows 10 中尝试使用 PHP CLI 删除(空)目录时出现“rmdir ... Permission denied:”错误?
- python - Pandas 对两个数字之间的列进行操作
- java - 当我添加对象时,用于在 Java 中存储对象的 ArrayList 不起作用
- linux - Deployer SSH bash 未加载配置文件
- css - 带有引导程序的透明导航栏无法按预期工作
- javascript - 为什么在将条件放入其中时for循环会在浏览器中崩溃?