link_to()는 경로를 성공적으로 생성하지만 해당 링크를 클릭하면 404가 발생합니다.

StackOverflow https://stackoverflow.com/questions/641083

  •  22-07-2019
  •  | 
  •  

문제

나는 웹사이트 위로.다음과 같은 링크를 클릭하려고 하면 등록하다 다음 오류가 발생합니다.

404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL 
    "/trevelyan.alumni/register" (/).

링크는 다음을 사용하여 생성됩니다.

<?php 
    print link_to( 'Register', 'register/index' ); 
?>

그리고 apps/frontend/modules/register에 '등록' 모듈이 있습니다.

저는 Symfony를 처음 접했습니다. 도움을 주시면 감사하겠습니다!


라우팅.yml:

# default rules
homepage:
  url:   /
  param: { module: home, action: index }

default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /trevelyan.alumni/:module/:action/*
도움이 되었습니까?

해결책

나는 당신의 문제가 당신이 "루트"URL에서 직접 벗어나지 않고 "하위 사이트"에서 Symfony를 실행한다는 것입니다.http://www.dur.ac.uk/trevelyan.alumni 대신에 http://www.dur.ac.uk/). 가장 쉬운 솔루션은 추가하는 것입니다 trevelyan.alumni 라우팅에서 모든 URL의 앞쪽으로.

예를 들어, default 대신 경로

default:
  url: /:module/:action/*

사용

default:
  url: /trevelyan.alumni/:module/:action/*

다른 팁

Steven Oxley를 읽고 다음도 시도해 보세요.

모듈 디렉토리에 최소한 액션 클래스가 있는지 확인하세요. 제대로 된 이름으로 (symfony는 대소문자를 구분하며 이는 매우 까다롭습니다.)

그렇게 하는 경우 기본 작업(모듈 구성 파일에 있음)이 모듈의 작업 클래스 중 하나인지 확인하세요.

구성 파일을 변경할 때마다 캐시를 ​​지우는 것을 잊지 마십시오.

Symfony 컨트롤러 파일을 편집하여 $ _server 변수를 사용하여 모듈을 찾을 수없는 경우 모듈을 선택 하여이 문제를 해결했습니다.

당신의 끝에 Routing.yml 파일:

homepage:
  url:   
  param: { module: main, action: index }

default:
  url:   /:module/:action/*

그리고 나중에 캐시를 지우는 것을 잊지 마십시오.)

라우팅 변경이 적용 되려면 Symfony Clear 캐시를 실행해야합니다.

./symfony clear-cache

기본 라우팅 규칙으로 인해 경로에 대해 일치하는 URL에서 점을 제거해야합니다.

기본 경로를 다음으로 변경합니다.

default:
  url: /trevelyan_alumni/:module/:action/*

그리고 그것은 작동해야합니다. 도트 (.)가 _로 대체됩니다.

나는 Symfony 1.2에서 1.4에서 업그레이드 했고이 문제가있었습니다. 하루가 끝나면 기본적으로 구성 파일은 모두 든 라우팅이 어렵게 될 정도로 충분히 변경되었습니다. 앱 구성 파일을 살펴보고 Lib/Vendor/Symfony/Lib/Config/Config (또는 Symfony를 유지하는 곳)에있는 "새 앱"템플릿과 비교/업데이트하는 것이이 문제를 해결했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top