php - Api平台,route_name参数要输入什么?
问题描述
我想在 symfony 4 的 api-platform 中编写自己的控制器。GET 操作出错:
NotFoundHttpException HTTP 404 未找到 未找到
在后期操作中我有一个错误:
应用程序的应用程序设置了例外。(任一路线)。配置/路由/api_platform.yaml)。确保有一个支持 api_platform 类型的加载器。
这是代码:
@ApiResource(itemOperations={
* "post",
* "special"={"route_name"="user_method_special"}
* })
*/
class Users
用户控制器:
class UserController extends Controller implements AuthenticatedController
{
public function userMethod(Request $request)
{
$userId = $request->get('user_id');
$method = $request->get('method');
$em = $this->getDoctrine()->getManager();
$userRepository = $em->getRepository(Users::class);
$user = $userRepository->findOneBy(['userId' => $userId]);
$userModel = new UserModel($em);
if (!$method) {
if (!$user) {
return new JsonResponse(['message' => 'Brak oraz userId: ' . $userId], Response::HTTP_NOT_FOUND, ['content-type'=>'application/json']);
}
$account = $userModel->getMethod($userId);
}
$method = str_replace(' ', '', $method);
$acclen = strlen($method);
$account = $userModel->parseMethod($method, $acclen, $userId, $replaceZeros);
//return new JsonResponse([ 'data' => FormatModel::formatMethod($method, $format)], Response::HTTP_OK, ['content-type'=>'application/json']);
return FormatModel::formatMethod($method, $format);
}
}
和 routes.yaml:
user_method:
path: '/user-method'
methods: ['POST']
defaults:
_controller: '\App\Controller\UserController::userMethod'
_api_resource_class: 'App\Entity\Users'
_api_item_operation_name: 'special'
我究竟做错了什么?
我想返回一个取自教义的值。
编辑:当我更改定义 route_name = user_method 时,POST 方法出现错误:
处理异常时抛出的异常(Symfony\Component\Config\Exception\FileLoaderLoadException:对于资源“App\Entity\Users”的操作“post”,必须存在“route_name”或“method”操作属性。(正在从“D:\xampp\htdocs\api\config/routes/api_platform.yaml”导入)。确保有一个支持“api_platform”类型的加载器。)
解决方案
您的操作定义和路由定义中的路由名称不匹配:
user_method _special vs user_method
顺便说一句,您用于创建自定义操作的方法不是推荐的方法:https ://api-platform.com/docs/core/operations/#recommended-method
推荐阅读
- php - PHP Ajax - 只发送数据库中的第一个输入值....为什么?
- html - 用于拆分视图 HTML 的单个滚动条
- c - 具有静态 int 的函数
- python - Adding a classmethod
- php - 如何将 WordPress 用户数据库与自定义 PHP 脚本集成
- c# - 如何将收到的字符串与表单中的预加载字符串进行比较
- javascript - React-redux 不重新渲染道具更改
- python - python tsfresh - column_id 参数用于什么
- html - 针对非英语国家的受众的英语页面
- google-apps-script - 查询由谷歌表格数据组成的表,谷歌大查询