symfony路由不工作但在控制台路由器中显示:debug

时间:2017-01-17 18:31:11

标签: php symfony controller routes

我在我的控制器中添加了一条路线,但即使我可以在路由器中看到它,它也无法正常工作:从控制台调试。

/**
* @Route("/apilucky", name="lucky")
*/
public function numberAction(Request $request)
{
  // returns '{"username":"jane.doe"}' and sets the proper Content-Type header
    return $this->json(array('username' => 'jane.doe'));
}

当我从我的浏览器或邮递员访问它时收到404消息,但是当我启动“php app / console router:debug”时,一切看起来都很好(从现有/工作路线输出碳复制品):

not working route

working route (我必须做截图,复制/粘贴后格式化不可读)

我是symfony的新手,但这看起来很简单。我忘了清理/刷新任何东西吗? (我尝试运行“php app / console clear:cache”但它没有用)。

编辑: 缓存也在客户端清除。

我正在尝试访问的地址是www.serverurl.fr/fr/apilucky

控制器文件非常庞大(有很多其他路线(我没有设置它们)正在运行,但这里有一个摘录:

<?php

namespace App\CoreBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;


/**
 * @Route("/")
 */
class WebviewController extends BaseController
{
// ...
    /**
 * @Route("/accounts", name="accounts")
 */
public function AccountsAction(Request $request)
{
    $accounts = $this->getDoctrine()->getManager()->getRepository('AppCoreBundle:Account')->findAll();
    $accountsArray = array();

    foreach ($accounts as $account) {
        $HasWeboob = $account->getWeboob();
        if ($HasWeboob) {
            $accountsArray[] = array(
                'id_weboob' => $account->getWeboob(),
                'account_name' => $account->getName(),
                'account_id' => $account->getId(),
                );
        }
    }
    return new JsonResponse($accountsArray);


 }
    /**
    * @Route("/apilucky", name="lucky")
    */
    public function numberAction(Request $request)
    {
      // returns '{"username":"jane.doe"}' and sets the proper Content-Type header
        return $this->json(array('username' => 'jane.doe'));
    }

}

非常感谢。

干杯, 于连

SOLUTION:

我清除了服务器端的缓存并且它工作正常。 php app / console clear:cache --env = prod

1 个答案:

答案 0 :(得分:0)

我认为问题可能在@route定义中,您在控制器中将路线定义为:

/**
* @Route("/apilucky", name="lucky")
*/
public function numberAction(Request $request)
{
  // your code here
}

但您要求http://www.serverurl.fr/fr/apilucky并且路由定义中不存在locale参数。

如果请求与http://www.serverurl.fr/fr/apilucky相似,也与http://www.serverurl.fr/apilucky类似,则应将路线定义为:

/**
* @Route("/{_locale}/apilucky", name="lucky")
* @Route("/apilucky", name="otherLuckyName")
*/
public function numberAction(Request $request)
{
  // your code here
}

但如果您的请求永远是http://www.serverurl.fr/fr/apilucky,那么您应该将其定义为:

/**
* @Route("/{_locale}/apilucky", name="lucky")
*/
public function numberAction(Request $request)
{
  // your code here
}

希望它有所帮助。