문제

WAMP 2.0을 사용하여 Setflash와 Hasflash 방법 1.4를 사용하고 있습니다.

내 Frontend_dev 앱을 사용하면 모두 잘 작동합니다. 그러나 생산 환경에서 내 테스트 $this->forward404Unless($user->hasFlash('resultsArray')); 실패합니다.

기본적으로 활성화 된 플래시 방법이 있다고 생각했습니다. 작동하게하려면 어떻게해야합니까?

편집 : 흥미로운 오류 메시지를 찾았습니다.

다음은 내 필터입니다. yml 파일입니다

# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/12-Filters

rendering: ~
security:  ~

# insert your own filters here

cache:     ~
flash:     ~
execution: ~

frontend_prod.log에는 다음과 같습니다.

3 월 16 일 05:57:42 Symfony [info] {sfpatternrouting} 일치하는 경로 "홈페이지"( /)에 대한 /) 배열 ( 'module'=> 'main', 'action'=> 'index',)
3 월 16 일 05:57:42 Symfony [err] {sfparseexception} configuration 파일 "d : wamp bin php symfony symfony14 lib/config/config/filters.yml"클래스 키 누락 된 "플래시"를 지정합니다.

도움이 되었습니까?

해결책

당신은 ExecutShowresult 리디렉션/전진 컨텍스트에서의 조치? 플래시는 수명이 제한되어 있으며 다음 요청 후에 사라집니다. 분명히 resultSarray 플러시되었습니다.

다른 팁

프로덕션에서 404 개가 생성되고 있으며 (Favicon 또는 Image), 이는 플래시 변수를 지우는 404 액션 (리디렉션 후)에 대한 요청으로 계산됩니다.

이것이 대답인지 확실하지 않지만 나는 flash Symfony 1.4.3 앱의 Filters.yml 파일의 키가 Symfony 사이트에서 버전을 잡은 이후로 건드리지 않았습니다. YML 파일에서 해당 라인을 제거하고 캐시를 지우고 다시 시도해 보셨습니까?

Prod에 캐싱이 활성화되어 있는지 궁금합니다.

당신이 _layout을 사용하고 캐싱하는 경우 (또는 플래시가 액션 템플릿에있는 경우 관련 조치를 캐싱) 후속보기에서 플래시 메시지없이 캐시 된 페이지를 반환합니다.

당신이 가지고 있는지 확인하십시오 use_flash=true 너의 factories.yml

user:
  class: myUser
  param:
    timeout:         3600
    logging:         %SF_LOGGING_ENABLED%
    use_flash:       true
    default_culture: %SF_DEFAULT_CULTURE%    

꽤 오래된 반응이지만 같은 문제가있는 다른 사람에게 약간의 사용이 있기를 바랍니다.

@lunohodov

(댓글 대신 답변을 게시 한 것에 대해 죄송하지만 문자 제한의 원인을 사용할 수 없습니다)

다음은 조치입니다.

public function executeShowResult()
    {
        $user = $this->getUser();
        $this->forward404Unless($user->hasFlash('resultsArray'));

        $this->results = $user->getFlash('resultsArray');
        $user->setFlash('resultsArray', $this->results);

        $this->pager = new myArrayPager(null, 15);
        $this->pager->setResultArray($this->results);
        $this->pager->setPage($this->getRequestParameter('page'));
        $this->pager->init();

        $this->myModule = $this->getRequestParameter('myModule');
        $this->myTemplate = $this->getRequestParameter('myTemplate');

        $forwardPage = '../../'.$this->getRequestParameter('myModule').'/templates/'.$this->getRequestParameter('myTemplate');
        $this->setTemplate($forwardPage);

        return sfView::SUCCESS;

    }

편집 : 또 다른 흥미로운 로그. 플래시를 설정하는 내 행동에서, 나는 세트를 테스트하기 위해 로그를 넣었습니다.

$user = $this->getUser();
$user->setFlash('resultsArray', $this->results);
if ($user->hasFlash('resultsArray'))
{
    sfContext::getInstance()->getLogger()->info("The flash is set");
}
else
{
    sfContext::getInstance()->getLogger()->info("The flash is NOT set");
}

그것에 대한 로그 :

3 월 16 일 06:07:13 Symfony [Info] 플래시가 설정되었습니다.

나는 여기서 큰 것을 놓치고있는 것 같아 ...

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