질문/조언질답게시판
Extra Form

{$logged_info->profile_image->src}

 

프로필이미지가 출력이 되지 않는데요. 위 코드가 잘못된건가요??

같은페이지에서 로그인회원 식별은 잘 되고 있습니다.

  • profile
    프로필 이미지가 없는경우를 대비해서 체크한번 해주시고 사용하시면 문제 없을거 같습니다.
  • profile profile

    프로필 이미지가 있습니다. 제가 로그인 했는데 unknown 으로 나옵니다.

    프로필 이미지가 없을 경우 대비도 해서 더미 프로필이미지로 지정했는데 모두 더미가 나옵니다.

  • profile profile
    그럼 이상한데요... 간단하게 <img cond="$logged_info->profile_image->src" src="{$logged_info->profile_image->src}" /> 이런식으로 많이 사용하잖아요?

    디버깅을 위해 $logged_info를 출력해서 변수 세팅이 잘되어 있는지 확인 해 보세요.
  • profile profile
    다시 원래대로 했는데 이제는 또 잘나오네요.. 이상하네요. 요게 왜 갑자기 불러오지 못했었을까요.....
  • profile profile
    저희 레이아웃이나 보드스킨 어디에도
    {@ $logged_info = Context::get('logged_info');}

    이게 적혀있는 부분이 없는데 저게 없어서 그런걸까요??
  • profile profile
    XE 템플릿에서 $logged_info는 Context::get('logged_info')와 동일합니다.
    따라서 둘을 구분하여 사용할 필요는 없습니다.
  • profile

    출력되는 곳은 게시판 보드 스킨입니다. _read.html , _comment_write.html 파일 두곳 모두 코드를 넣어도 출력이 안되네요.

     

    레이아웃에 넣어도 출력이 안되네요.

  • profile
    {@
    $oMemberModel = &getModel('member');
    $profile_image = $oMemberModel->getProfileImage($logged_info->member_srl);
    }

    {$profile_image->src}

    일단 이렇게 하면 프로필이미지주소를 불러오네요.....

    본문에 코드는 왜 안되는건지... php5 쓸때는 제 기억에 문제가 없었던....
  • profile profile

    $logged_info->profile_image는 기본으로 세팅되는 변수가 아닌 것으로 기억합니다.
    아마 예전에는 위와 같은 코드를 변수를 만들어 사용하는 애드온이나 모듈 등 서드파티 자료가 있었는데
    최근에 해당 자료의 사용을 중단하셨거나, 해당 자료가 업데이트되어
    내부적으로 사용하는 변수명이 바뀌어서 안 되고 있을 가능성이 높아 보입니다.

    &는 10년 전의 적폐(?)이니 더이상 필요없고요, 더 줄여서 쓰시려면
    {getModel('member')->getProfileImage($logged_info->member_srl)->src}
    이렇게 한 줄로 하셔도 되긴 합니다 ^^

  • profile profile
    {@ $logged_info = Context::get('logged_info');}

    요렇게 코드 작성하지 않고
    $logged_info 를 사용하는 것도 정상적이지 않은건가요? 이게 예전부터 궁금했던....
  • profile profile

    다른 댓글에서 말씀드린 것처럼 템플릿에서 사용하는 변수는 자동으로 Context와 연동됩니다. 컴파일된 결과물을 열어보시면 모조리 Context를 참조하도록 되어 있어요.

     

    예: Context::set('webzigi', 1234); 해놓고 템플릿에서 {$webzigi} 하면 1234라고 나옵니다.

    "이상적"인 상황은 아닙니다만 (아마 예전에 register_globals를 사용하여 모든 변수를 전역변수로 만들던 시절의 느낌을 살리고 싶어셨던 모양입니다) XE 템플릿 시스템이 이렇게 만들어진 지 워낙 오래되었기 때문에 굳이 "정상적"이냐고 물을 필요는 없을 것 같아요. XE 템플릿 시스템을 처음 개발하신 분들의 의도대로인 것은 맞습니다.

  • profile profile
    제가 궁금한건 레이아웃 상단에
    {@ $logged_info = Context::get('logged_info');}

    이걸 넣어두고 이후 $logged_info 를 사용하는게 좋은가 해서요. 방금 사용하는 레이아웃 상단에 모두 넣긴 했습니다.
  • profile profile
    안 하는 게 정상입니다.

    $logged_info = Context::get('logged_info');
    Context::set('logged_info', $logged_info);

    위의 코드를 실행하는 것과 100% 동일한 효과예요. 아무 의미가 없지요.

    만약 로그인 상태인데도 템플릿에서 $logged_info 변수가 제대로 나오지 않는다면
    서드파티 자료에서 뭔가 잘못 건드리고 있는 거예요.
    그러나 말씀하신 증상으로 봐서는 $logged_info는 정상이고
    프로필 이미지 부분만 정보가 없는 것 같습니다.
  • profile profile
    php가 아니고 스킨, 레이아웃 즉 템플릿 단에서 보면 무의미한 코드 입니다.
  • profile profile
    일단 다시 뺐습니다. 이부분 공부를 다시 해봐야 할 것 같네요. 햇깔려서요 ㅋ
    답변 감사합니다.
  • profile profile
    네. 그런 차이가 있는 거군요. 다시 뺐네요. 감사합니다.
  • profile profile
    $logged_info->profile_image가 코어단에서 기본세팅하는 변수가 아니었다니... 처음 알았습니다 @.@
  • profile profile
    일단 저도 여기 검색에서 팁으로 작성된 게시글을 보고 넣었던 것으로 기억되는데 그냥 댓글에 제가 적은 코드로 변경해야 겠네요.
  • profile profile
    소스만 대강 봐서는 기본으로 세팅될 것 같은데... 뭔가 잘 안되나 봐요.
  • profile profile

    레이아웃에
    <?php
    $myname = 'xe';
    ?>
    {@ $myname = 'town';}

    이런 코드가 있다면 두개의 $myname 변수는 별개의 변수 입니다. 하단의 템플릿 문법은 php실행시 $__Context->myname으로 인식하기 때문입니다.
    즉 최종 php실행시 하나는 $myname, 또하나는 $__Context->myname의 변수로 별개로 취급됩니다.

    Context::get('logged_info') 이걸 풀어보면 xe에서만 사용하는 변수 $__Context->logged_info를 가져와라 정도(?) 입니다만...
    템플릿 문법에서 $logged_info는 이미 $__Context->logged_info로 해석되기 때문에 무의미 하다고 봅니다.

  • profile profile
    & 적폐? 이녀석이 어떤 영향을 주는지는 잘 모르겠지만 적폐라고 하셨으니 일단 검색해서 모두 제거했습니다. ㅋ
    레이아웃,보드스킨 에 몇 군데 제가 넣은것 제작자가 넣은 것이 있네요.
  • profile profile
    6시간전에 저도 똑같은 고민을 했는데 그냥 PHP코드 생으로 때려박아서 해결한...ㅋㅋ
  • profile profile
    PHP 4.x 시절에는 클래스 불러올 때 &를 붙이면 좋다고 했는데, PHP 5부터는 아무 차이도 없어요. 물론 클래스가 아닌 다른 변수를 다룰 때 &를 붙이는 것은 의미가 있으니 모조리 다 지우시면 곤란합니다.
  • profile profile
    코알못이라 &getModel 의 &만 제거했어요~~~

서버에 요청 중입니다. 잠시만 기다려 주십시오...