我在我的控制器中添加了一条路线,但即使我可以在路由器中看到它,它也无法正常工作:从控制台调试。
/**
* @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”时,一切看起来都很好(从现有/工作路线输出碳复制品):
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
答案 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
}
希望它有所帮助。