2010-06-25 2 views
0

렌더링 문제는 내가 인덱스 함수를 호출하려면, 그리고 난 후 afterFilter 다시 인덱스 함수로 리디렉션하고 같은 일을해야 ... 루프처럼, 문제는 그것을 렌더링하지 않는다, ive는 $ this-> render ('index')를 사용하여 시도했지만 작동하지 않으며 다른 것들도 사용하지 않는다 ..CakePhp -보기 + afterFilter 렌더링

추신 : 나는 인덱스에있는 모든 코드를 포함하지 않았다. 그 무의미한, doesnt는 그것의 유무에 관계없이, 단지 내가보기에 필요했던 물건을 포함했다.

function afterFilter() 
{ 

if ($this->params['action'] == 'index') 
{ 
    sleep(3); 
    $this->redirect(array('action'=>'index',$id), null, true); 
} 

} 

기능

function index($ido = 0) 
{ 

$this->set('Operator', $this->Operator->read(null, $ido)); 
$this->set('ido', $ido); 
} 

지속적으로 채널 내 데이터베이스를 확인보기 = INDEX.CTP

<legend>Operator StandBy Window</legend> 
    <?php 



    ?> 

</fieldset> 

    <?php echo $html->link('LogIn', array('controller' => 'operators', 'action' => 'add')); ?> 
    <?php echo $html->link('LogOut', array('controller' => 'operators', 'action' => 'logout',$ido)); ?> 
+1

'$ this-> redirect()'는 브라우저를 다른 사이트 (이 경우에는 루프)로 리디렉션하는'Location' 헤더를 출력합니다. 이것은 a) 좋은 생각처럼 보이지 않고 b)는 afterFilter에서 잘못 배치됩니다. 여기서 진정한 목표는 무엇입니까? 왜 반복해야합니까? – deceze

+0

JavaScript로 해보지 않는 이유는 무엇입니까? –

+2

이 기능의이면에는 논리적 인 질문이 있습니다. 불합리하고 잘못된 시스템 디자인에 대한 의구심이 들었습니다. –

답변

1

함수 ange, 변경이 발생하면 아프 리디렉션, 그렇지 않으면 '데이터베이스 검사'및 '렌더링보기'의 상수 루프가 필요합니다.

PHP를 사용하는 서버에서는 불가능하며 특히 CakePHP의 템플릿 시스템에서는 그렇지 않습니다. PHP는 서버에서 "페이지를 만듭니다"를 브라우저 및 선형 방식으로 보냅니다. 서버에서 반복하면 페이지 내용이 반복됩니다.

Normal content 
Normal content 
Normal content 
<redirect> 

클라이언트를 리디렉션하려면 헤더를 출력해야합니다. 헤더는 다른 것보다 먼저 출력되어야합니다. 이미 몇 번 반복했고 콘텐츠가 이미 클라이언트로 전송 된 경우 더 이상 리디렉션 할 수 없습니다. meta tag that'll refresh the page every x seconds와 현재 상태를 보여주는 한 번에

  • 당신을 바로 출력 한 페이지 :

    는 두 가지 방법이 있습니다. 이것은 다소 비싸고 성가시다.

  • AJAX 및 아마도 Comet을 사용하여 브라우저의 페이지 정보를 동적으로 업데이트하십시오.