모든 양식 작업을 단일 URL로 지정하고 form_id와 같은 input_hidden을 사용하여 작업을 구분하면됩니다. 예를 들어 다음과 같은 URL을 만듭니다./process 해당 URL의 모든 양식을 가리키면 숨겨진 카운터로 양식이 분리됩니다.모든 양식을 단일 URL로 처리하는 것이 현명한 방법입니까?
답변
아니요, 현명하지 않습니다. 무관 한 기능을 다른 파일과 분리하여 호출하면 어디 있는지 쉽게 알 수 있습니다. 여러 개의 작은 파일> 하나의 거대한 파일.
사실 실제로 해를 끼치 지 않지만 다른 파일을 만들면 누구나 쉽게 이해할 수 있습니다. 다른 파일을 만들고 호출하면 코드가 더 깨끗 해집니다.
일반적으로 몇 개는 괜찮지 만 같은 페이지에 많은 양식이 있고 Ajax를 사용하여 제출하지 않은 경우에만 가능합니다. 당신이 그것을 깔끔하게 유지하는 방법은 양식 이름을 제공하고 각 필드를 그 이름으로 네임 스페이스를 붙여서 어떤 양식이 제출되었는지 알 수 있도록하는 것입니다.
이 경우 일반적으로 양식 유효성 검사 오류를로드하는 데 필요한 작업을 줄이는 데 필요한 반면, 일반적으로 처리 페이지에서 리디렉션 한 후에 다시로드하려면 세션의 오류를 유지해야합니다.
예 : 오류가 발생한 경우
-> contact.php
-> Submit to contact.php
-> If errors, re-render the form without redirect on contact.php
-> Else, process the form, then redirect.
은 양식의 두 번째 전시는 여전히 이전에 제출 한 데이터에 쉽게 액세스 할 수 있습니다 의미 POST 요청의 일부가 될 것입니다.
유효하다면 게시 된 데이터가 이미 다른 곳에 보관되어 있으므로 더 이상 필요하지 않습니다.
그러나 이는 매우 문맥 적입니다. 단일 스크립트를 사용하여 양식의 "전체"를 처리하는 이유는 아닙니다. 활성 페이지에있는 것만.
일반적으로 없습니다.
그러나 적어도 일부 양식에서는 사용하는 것이 바람직한 유스 케이스가 있습니다. 그러나 이러한 양식은 동일한 인터페이스를 구현해야하며, 동작은 동일합니다.
예를 들어, 버튼이 페이지에 배치되고 모달에 다른 양식이로드되는 사용 사례가 하나 있습니다. 각 컨트롤러는 동일한 컨트롤러에 게시되지만 모든 컨트롤러는 폼에서 validate()
, save()
및 render()
메서드를 호출한다는 것을 알아야합니다.
나는 다른 케이스가있을 것이라고 확신하지만 일반적인 스탠드는 "아니오"여야합니다. unles에 대한 좋은 이유가 있습니다.