이전에 symfony2를 사용하지 않았지만 추가하려는 일부 코드를 상속했습니다.
에 새 경로를 추가했습니다 UserController
.
/**
* @Route("/pushsettings", name="pushsettings", defaults={"_format"="json"})
* @View()
*/
public function pushsettingsAction(Request $request) {
...
}
달리면 ./app/console router:debug
경로가 인식되는 것을 볼 수 있습니다. 그러나 브라우저를 통해 경로에 액세스하려고하면 404가 표시됩니다.
로그 파일을 살펴본 결과 다음을 추적했습니다.
cache/prod/appProdUrlMatcher.php
이 파일은 자동 생성되지만 어떤 이유로 내 경로가 여기에서 생성되지 않습니다.
이 파일을 수동으로 편집하여 문제가 해결되었지만 여기에서 경로가 자동 생성되지 않는 이유는 무엇입니까? 내가 뭔가를 놓친 적이 있습니까?
그런 다음 캐시를 지우면 경로가 다시 404 페이지로 돌아갑니다!
편집하다:
routing.yml은 다음과 같습니다.
gp_api:
resource: "@AppApiBundle/Controller"
prefix: /api
type: annotation
gp_admin:
resource: "@AppAdminBundle/Controller/"
prefix: /admin
type: annotation
resetpsw:
pattern: /reset-password/{key}
defaults: { _controller: AppApiBundle:Default:resetpsw }
login:
pattern: /login
defaults: { _controller: AppApiBundle:Default:resetpsw }
login_check:
pattern: /login_check
logout:
pattern: /logout
user:
pattern: /user
defaults: { _controller: AcmeMainBundle:Security:user }
admin_login:
path: /admin/login
defaults: { _controller: AppAdminBundle:Default:login }
admin_twitter:
path: /admin/twitter
defaults: { _controller: AppAdminBundle:Default:twitter }
admin_twitter_login:
path: /admin/twitter_login
defaults: { _controller: AppAdminBundle:Default:twitterLogin }
admin_check:
pattern: /admin/admin_check
fos_oauth_server_token:
resource: "@FOSOAuthServerBundle/Resources/config/routing/token.xml"
fos_oauth_server_authorize:
resource: "@FOSOAuthServerBundle/Resources/config/routing/authorize.xml"
gp_api_oauth_server_auth_login:
pattern: /oauth/v2/auth_login
defaults: { _controller: AppApiBundle:Security:login }
gp_api_oauth_server_auth_login_check:
pattern: /oauth/v2/auth_login_check
defaults: { _controller: AppApiBundle:Security:loginCheck }
router : debug에서 경로를 볼 수 있습니다.
pushsettings ANY ANY ANY /api/user/pushsettings
그러나 이것은 캐시 파일에서 생성되지 않습니다.
여기에서 해결책을 찾았습니다.
해결책은 app.php의 줄을 변경하는 것입니다 (두 번째 매개 변수는 'false'에서 'true'로).
$kernel = new AppKernel('prod', true);
이유는 모르겠지만 적어도 지금은 작동합니다!
편집하다:
이로 인해 일시적으로 문제가 해결되었지만 나중에 문제가 다른 엔드 포인트의 버그라는 것을 발견했습니다. 콘솔에서 경로를 확인하면 주석 만 구문 분석되어 표시됩니다. 그러나 캐시를 빌드 할 때 오류가 발생하면 엔진이 계속 진행되지 않습니다. 디버깅을 켜면 오류에도 불구하고 캐시를 쓸 수있는 것 같습니다.
이제 오류를 수정하고 디버깅을 끄고 모두 괜찮습니다! :)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다