在axios / ajax呼叫中处理Symfony路由

时间:2019-01-23 03:38:10

标签: reactjs symfony

需要将数据从reactjs传递到服务器.js文件突出了项目的一部分,而不是单独的一部分。问题在于似乎在Symfony中找不到路线

profile:
path: /profile/{slug}
defaults: { _controller: MyBundle:Agent:profile }

在AgentController中

 public function profileAction(Request $request, $slug)

Reactjs文件

   axios.get('/profile',{
        params: {
            slug:agent.slug,
            id:agent.id
        }
    }).then((res) => {
        console.log(res, 'the response')
    }).catch((err) => console.log(err.toString(), 'error'))

但是我不断收到错误路由,找不到相关的错误,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您生成的axios请求将不会执行所需的请求,但会在没有任何路由参数的情况下执行以下请求:

/profile

应该是以下路线

/profile/{agent.slug}

您可以为此使用template literals

axios.get(`/profile/${agent.slug}`)
    .then((res) => {
        console.log(res, 'the response')
    }).catch((err) => console.log(err.toString(), 'error'))

如果您不使用webpack或其他任何花哨的东西,则需要自己连接字符串。

axios.get(`/profile/` + agent.slug)
    .then((res) => {
        console.log(res, 'the response')
    }).catch((err) => console.log(err.toString(), 'error'))

请注意,您的agent.slug参数永远不会不确定。

您也可以在使用SymfonyFramework时使用FOSJsRoutingBundle。使用此功能,您可以使用:

axios.get(Routing.generate('profile', {slug: agent.slug})
    .then((res) => {
        console.log(res, 'the response')
    }).catch((err) => console.log(err.toString(), 'error'))