2009-10-14 7 views
1

현재, 나는 내 자신의 MVC 프레임 워크를 사용하고있다. 내가 뭘하려는 건 jQuery (그 부분을 가지고있어)와 아약스 전화를 만들고, 내가 그것을 얻을 변수를 전달하고 내가 원하는 출력을 얻을 수있는 컨트롤러에서 메서드를 호출하여 Ajax 호출에서 반환 된 .Ajax 요청으로 클래스 호출하기

페이지가 양식으로 가득 차서 새로 고칠 수 없기 때문에 페이지를 새로 고칠 수 없습니다. 모델과 컨트롤러의 포인트는 무엇이 될 것이기 때문에 필요한 기능을 사용할 수있는 "handle.php"에도 전달할 수 없습니까?

어떻게해야합니까? 또는 오히려, 더 중요한 것은, 그런 일에 접근하는 가장 좋은 방법은 무엇일까요? 다시 필요한 클래스를로드 할 수 있습니까? (사용하는 확장 때문에 약 6 개가 필요합니다) 적절한 메소드를 호출하는 새 오브젝트를 인스턴스화 할 수 있습니까?

젠드와 같은 것을 배우는 대신 내 자신의 MVC 프레임 워크를 만드는 것은 내 자신의 잘못이라고 생각합니다. 도움이 될 것입니다, 그냥 올바른 방향으로 지적해야합니다.

답변

1

귀하의 질문에 당신이 얻으려는 데이터의 종류를 찾는 것이 약간 어렵습니다. 서식을 채우기 위해 데이터를 가져와야합니까? 또는 PHP 스크립트를 사용하여 양식의 데이터를 다시 데이터베이스로 전달해야합니까?

두 경우 모두 'handle.php'스크립트가 잘 작동하는 것 같습니다. 들어오는 데이터를 처리하고, 유효성을 검사하고, 데이터베이스에 저장하기 위해 (아마도 __autoload를 사용하여) 적절한 클래스를로드 할 수있는 일종의 bare-bones 스크립트를 만드십시오.

+0

을하는 데 도움이됩니다. 내가 테스트 중이거나 놀고있는 모든 종류의 것들을 갖고 싶습니다. 한 양식은 임의의 단어 생성기이며, 다른 양식은 문자열의 한쪽 끝에서 다른 끝까지 그래디언트를 적용하는 텍스트를 사용합니다. 거의 실용적이지 않은 무작위 재료. 양식을 다시 설정하고 싶지 않기 때문에 아약스를 사용하고 싶습니다. 앞으로 양식의 출력을 innerhtml로 가져 오는 계획이 있습니다. 또한 세션을 사용하고 싶지 않습니다. – NeoTubNinja

1

다른 컨트롤러/방법 조합을 호출하는 것과 같은 방법으로 페이지에 대한 요청을하는 것이 좋습니다. 예를 들어, 컨트롤러 Ajax 및 방법 업데이트 ...을 호출하려고한다고 가정하면 URL 라우팅을 사용하면 /ajax/update에 간단히 링크 할 수 있습니다. 이것은 이상적인 솔루션입니다.

이러한 방법 내에서 템플릿/레이아웃 /보기 조합을 표시하는 것과 대조적으로 결과를 에코하고자 할 것입니다. 이것은 당신이 그런 일을 허락하기 위해 당신의 CMS를 조정할 필요가 있음을 의미 할 수 있습니다.

업데이트은 AJAX 요청에서 제출 된 데이터를 검색 할 수 있도록 전역 $ _POST 및 $ _GET에 대한 액세스 권한을 가지고 있어야합니다.

+0

내 현재 url 체계는/page/action/query입니다. 그래서 제가 페이지에서 검색을한다면/books/search/plato처럼 보일 것입니다. "Books"클래스의 컨트롤러는 "search"메서드를 호출하고 "plato"를 검색 메서드에 전달하는 곳에서 호출됩니다. 그래서 지금 나는 놀이터 페이지가 있습니다. 클래스 내에서 일부 사용자 입력 텍스트 영역에 적용 할 "그라데이션"메서드가 있습니다. 그래서 $ _GET을 통해 양식을 보내고 "handle.php"에없는 "gradient"를 호출하고 싶습니다. 나는 그곳에 그것을 넣을 수 있었지만 그때 컨트롤러는 나에게 쓸모가 없을 것이다. – NeoTubNinja

1

호출하려는 명령을 판별 할 수있는 방법이 있어야 컨트롤러가 이동해야 할 위치를 결정할 수 있습니다.

예를 들어 양식 #과 명령을 전달하면 컨트롤러가이 양식을 컨트롤러에 전달하여 필요한 작업을 수행하는 방법을 결정할 수 있습니다.

한 컨트롤러에서이 모든 논리를 사용하는 것이 위험하다고 생각합니다. 어떤 시점에서 매우 긴 switch 문을 의미하기 때문입니다.

컨트롤러가 자바 스크립트 (클라이언트)의 입력을 처리하는 방법에 대해 더 자세히 설명하고, 라우팅을 결정할 수 있습니다. 현재는 어떻게 도와 줄지 알 수 있습니다.

+0

지금 당장 컨트롤러가/page/action/query의 URL에서 명령을받습니다. 나는 4 년 전에 html 앵커 외에도 아무것도 사용하지 않았지만 좋은 생각 인 것 같습니다. 현재로서는 내 문제인 자바 스크립트를 처리하는 컨트롤러가 없습니다. 나는 Ajax 호출을 처리 할 논리를 가질 수도 있고 폼 당 컨트롤러를 가짐으로써 컨트롤러를 자동로드 할 수도있다. (폼이 많아 질 것이기 때문이다.) 어느 쪽도 나에게 호소하지 않았다. #을 써서 넘길 수 있다면. – NeoTubNinja

+0

href를 사용하는 것이 좋은 선택입니다. 그러면 컨트롤러에 어떤 양식과 명령을 알릴 수 있습니다. action = "controller.php/formname/commandname". 그러면 컨트롤러가 요청한 부분을 가져 와서 '/'로 URL을 분할하여 요청을 보낼 곳을 결정할 수 있습니다. –

1

당신은 말하고 있습니다.

지금 현재 나는 내 문제를 내가 컨트롤러가 아약스 요청을 처리하는 컨트롤러를 필요로하지 않는다 알고있는 것처럼

하는 컨트롤러 처리 자바 스크립트가 없습니다. ajax 요청은 일반적인 요청과 동일하게 수행합니다. 그래서 귀하의 컨트롤러가 정상적인 요청으로 무엇을해야할지 이미 알고 있다면 이미 자바 스크립트를 처리하고 있습니다.

다시 책 예제를 올바르게 이해하면 그런 식으로해야합니다.

$.get("/books/search/plato", function(data){ 
    alert("Data Loaded: " + data); 
}); 

/놀이터 및 그래디언트의 경우이 작업이 가능합니다. handle.php에서 이것을 호출 할 수 있으며 놀이터 컨트롤러를 요청하고 데이터를 반환합니다.

$.get("/playground/gradient", function(data){ //data is what is returned from playground file 
    alert("Data Loaded: " + data); 
}); 

희망이 내가 놀이터라는 이름의 페이지가, 기본적으로

관련 문제