這個有點晦澀難懂。我讀到 Symfony 在處理多個類似模式的路線時會感到困惑。在這里,這是我迄今為止嘗試過的: -
對于初學者,我點擊了端點:https://127.0.0.1:8000/api/contracts/12345/new它完全回傳404錯誤:-
{type: "https://tools.ietf.org/html/rfc2616#section-10", title: "An error occurred", status: 404,…}
class
:
"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException"
detail
:
"App\\Entity\\Project object not found by the @ParamConverter annotation."
status
:
404
title
:
"An error occurred"
trace
:
[{namespace: "", short_class: "", class: "", type: "", function: "",…},…]
type
:
"https://tools.ietf.org/html/rfc2616#section-10"
這是我的 URL 模式的快照:-
docker-compose exec app bin/console debug:router
new_contract POST ANY ANY /api/contracts/{id}/new
api_edit_project POST ANY ANY /api/contracts/{id}/edit
它們非常相似,但我使用的new是上面的端點。這是控制器:-
/**
* @Route("/api")
*/
class ContractController extends BaseApiController
{
/**
* @Post ("/contracts/{id}/new", name="new_contract")
*/
public function postNewContractAction(){
// -- we don't hit this method at all
}
/**
* @Post ("/contracts/{id}/edit", name="api_edit_project")
*/
public function postEditContractAction(){}
}
除此之外,我嘗試在排序方面移動控制器方法,但這沒有效果。
有任何想法嗎?
uj5u.com熱心網友回復:
正如Symfony 檔案中所說,收到404錯誤時,當嘗試使用魔法自動通過其 id 獲取物件時paramConverter,這通常意味著該 id 沒有資料。
- 如果沒有找到 Post 物件,則生成 404 Response;
我懷疑沒有Projectwith id=12345。
實際上,您為什么要{id}在/new路線中使用?據我了解,在這種情況下,您還沒有 ID。
我總是嘗試將引數設定在路線的最后一個位置,因為它可以避免路線沖突。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/521210.html
標籤:交响乐
上一篇:如何在包含模板中傳遞嵌入的影像
