안녕하세요! 우선 즐거운 명절 보내시길 바랍니다.

 

신규 템플릿문법 배울겸 이것 저것 만들어 보면서 인클루드시 변수 전달을 가지고 만지작 해봤는데요.. 아마 고수님들은 뭔 이런거 가지고...할 수도 있겠지만; 저한테는 너무 강력?하게 다가와서 밤을 태웠습니다. 한마디로 그냥 너무 좋습니다!

 

일단 라이믹스로 사이트를 만들다 보면 최근게시물 때문에 위젯을 생성해야하고 위젯스타일을 설정해줘야 하는 경우가 많았습니다. 저는 개인적으로 이 방식이 사용자를 배려하는데에 대해서 이해는 되지만 너무 불편했고 , <img> 태그로 위젯코드가 생성되는 이것도 뭔가 이상?하고 , 생성된 위젯의 디자인을 변경하려면 또 위젯폴더나 위젯스타일폴더를 오가면서 은근히 귀찮은 작업을 했었습니다. 귀차니즘때문에 개인적인 작업시에는 위젯을 만들거나 생성하지 않고 최근게시물 쿼리 코드와 기본디자인을 html파일 미리 작성하고 컴포넌트인것처럼 분장 시켜서 layout.html 또는 외부페이지안에 필요시 불러와 수정하며 사용했었습니다. 근데 이것도 사용하다 보면 은근히 코드가 지저분하고, 재사용이 불편했었으며 혼자 쓰기엔 좋지만 뭔가 바로 설정페이지에서 뚝딱거리며 사이트를 만드는 초보 사용자들 한테는 좋은 접근이 아니지요.

 

근데 이번 템플릿문법 v2 에서  인클루드시 변수 전달이 게임 체인저가 될것 같습니다. 간단한 최근게시물을 위한 코드를 보시죠.

 

@include ($layout_info->use_widget , [
    'title' => $layout_info->use_title ,
    'srl' => $layout_info->use_srl ? $layout_info->use_srl : 0 ,
    'listCount' => $layout_info->list_count ? $layout_info->list_count : 5
])

 

이게 되더라구요?? 진짜 상당히 독립적이고 다이나믹하고 재사용이 가능한 컴포넌트를 만들수 있겠습니다. react/vue에서 처럼 props를 넘겨받아 쉽게 재사용 가능한 컴포넌트들을 보면서 군침을 안흘려도 되겠습니다.

 

꼭 최근게시물이 아니더라도 , 디자이너들은 컴포넌트만 잘 디자인해서 .html / .blade.php 파일로 여러가지 만들어 , 레이아웃 설정에서 초보 사용자들도 더 쉽게 디자인을 선택하고 변경하고 내용을 연결할수 있게 옵션을 제공하면, 만드는 자는 위젯/위젯스타일을 따로 만드는 귀차니즘은 없어지고 사용자들은 더 쉽고 직관적인 사용을 할수 있을것 같습니다. 물론 여러 경우와 고급적인 응용은 더 배우면서 테스트해봐야 알겠지만 , 현재 테스트된 부분들은 상당히 나이스하고 나이스했습니다.

 

혼자 알기엔 아까워서 끄적여봅니다. 혹시 더 나이스한 응용을 위한 힌트를 줄수 있으면 적극 남겨주세요! 감사합니다. 

문법 @json도 눈에 띄는데 외부 api도 받아서 출력할수 있는건지 아직 어케 사용할지 몰라서 더 테스트 해봐야겠습니다.

 

새해 복 많이 받으세요!

 

 

  • profile
    컴포넌트를 인클루드할 때 변수를 넘기면 딱 그 변수들만 사용할 수 있기 때문에, 다른 자료들이 임의로 셋팅해 놓은 Context 변수에 영향을 받지 않아서 더 안정적으로 작동한다는 장점도 있지요.

    그런데 저런 문법은 정규식으로 해석되는 거라, 너무 길거나 복잡한 내용을 넣으면 짝 맞는 괄호를 못 찾아서 엉뚱하게 해석될 수도 있습니다. 라라벨 블레이드 매뉴얼에서도 템플릿 문법 안에 배열 리터럴을 써넣는 것은 권장하지 않더군요. 웬만하면 배열을 별도로 선언하고 변수만 넘기시는 것을 추천합니다.^^
  • profile profile

    댓글 감사합니다! 제가 잘 이해된건지 몰라서 물어봐야겠습니다! 추천하시는 배열을 별도로 선언하고 변수만 넘기는 방법이 혹시 > 블레이드 메뉴얼 인클루드 예제중 @include (['custom.admin', 'admin'], ['status' => 'complete']) 처럼 () 안에 [ ] 하나당 변수 하나씩만 넘기는 뜻인가요?

  • profile profile

    @php
    $conf = [
        // 복잡한 내용은 여기에서 선언
    ];
    @endphp

    @include ($파일명, $conf)

  • profile profile
    아아 , 따로 뭔가 있는줄 알았습니다. ㅎㅎ 동일 페이지, 동일 컴포넌트를 여러개 사용하면서 $conf1 $conf2 .. 이렇게 불러오는게 복잡한 뷰 구성할때는 더 좋겠습니다. 감사합니다!

    conf가 나와서 갑자기 생각나는게 있습니다. 레이아웃 만들면서 conf 폴더안에 info.xml 을 만들어야 되는데 , 이거 왜 폴더 안에 담아야 하는지 궁금합니다. 다른 스킨들은 폴더안에 바로 skin.xml이 있는데 레이아웃만 conf/info.xml 로 되어있어 그냥 layouts/skinwhatever/conf.xml 처럼은 안되는지요?
  • profile profile
    거꾸로입니다. 스킨만 이상하게 conf 폴더가 없는 거예요. 모듈이나 레이아웃, 위젯, 애드온 등은 모두 있거든요.
  • profile profile
    아. 스킨만 이상한거였군요. 좋은 밤 보내세요!
  • profile
    처음 xe코어로 만나서 라이믹스 까지 많은 시간 보내면서 XE 문법 좀 익혀보고 싶다 마음만 먹고 세월만 흘렀습니다 ㅎㅎ;;;
    코드를 뚫어져라 보다 보면 뭔가 이해가 되는 듯 하다 가도 사막 한가운데 덩 그러니~ 버려진 막막함...
    아 이것도 타고난 재능이 있어야 하는구나 싶네요
    회원 님들 모두 새해엔 소원 성취들 하시고 짱짱한 알고니즘을 이루는 한해들 보내세요 ~
  • profile profile
    코드를 뚫어져라 보다 보면 뭔가 이해가 되는 듯 하다 가도 사막 한가운데 덩 그러니~ 버려진 막막함... 저 아직도 그런 순간이 많아요 ㅎㅎㅎ 이쪽 세계는 뭔 하나를 알려면 자꾸 옆으로 밀어서 강제 학습시켜요. 처음엔 html/css 만 알면 웹을 만들수있다 했는데...끝~이 없더라구요. 이제 머리도 잘 안돌아가기 시작하는데......