엄격한 경고 : 변수 만 참조로 전달해야합니다.


21

다음과 같은 오류가 발생합니다.

엄격한 경고 : include () (/ home / sites / dev / theparce / sites / all / themes / parce / block--block--3.tpl.php의 18 행)에서 변수 만 참조로 전달해야합니다.

이것은 오류를 일으키는 블록 코드입니다.

if ($user_gallery) {
  print render(node_show($user_gallery));  // Line 18
  print drupal_render ($user_gallery_edit);

}
else {
  print drupal_render($user_gallery_new);
}

예상대로 모두 인쇄되었는데 왜 그 오류가 발생합니까?

답변:


52

이 오류는 함수가 참조를 매개 변수로 기대하지만 참조를 얻지 못할 때 발생합니다.

귀하의 경우 render()는로 정의 render(&$element)되지만 node_show()로 정의 node_show($node, $message = FALSE)되지는 않습니다 &node_show($node, $message = FALSE). 함수가로 정의
되었으므로에 대해서도 마찬가지입니다 .drupal_render()drupal_render(&$elements)

참조로 전달에 설명 된대로 함수에 참조 매개 변수가 필요한 경우 함수에 전달할 수 있습니다.

  • 변수 (예 : 참조를 반환하지 않는 함수의 결과를 포함하는 임시 변수)

  • 함수에서 반환 된 참조

다른 표현식을 사용하면 결과가 정의되지 않으며 PHP 버전에 따라 다릅니다.

  • render(node_show()) PHP 5.0.5에서 치명적인 오류, PHP 5.1.1에서 엄격한 표준 고지 및 PHP 7.0.0에서 고지

  • render(5) 치명적인 오류를 일으킨다

  • render(new DateTime()) PHP 7.0.7에서 알림 생성

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.