object 변수일 경우 템플릿 foreach 문이 작동하지 않는 문제 수정

#1023 문제 수정

레이아웃 확장변수 (extra_var)가 object 라서 발생한 warning 수정 (왜 object로 했는 지 모르겠지만, array가 더 맞는 듯함)
Warning: count(): Parameter must be an array or an object that implements Countable in php 7.2
This commit is contained in:
conory 2018-03-30 23:28:44 +09:00
parent c4b12c301c
commit 3d24c14f7f
3 changed files with 7 additions and 7 deletions

View file

@ -466,7 +466,7 @@ class TemplateHandler
{ {
$expr_m[2] .= '=>' . trim($expr_m[3]); $expr_m[2] .= '=>' . trim($expr_m[3]);
} }
$nodes[$idx - 1] .= sprintf('<?php if(is_array(%1$s))foreach(%1$s as %2$s){ ?>', $expr_m[1], $expr_m[2]); $nodes[$idx - 1] .= sprintf('<?php if(!empty(%1$s))foreach((array)%1$s as %2$s){ ?>', $expr_m[1], $expr_m[2]);
} }
elseif($expr_m[4]) elseif($expr_m[4])
{ {

View file

@ -49,7 +49,7 @@
<span class="x_help-block">{$lang->about_header_script}</span> <span class="x_help-block">{$lang->about_header_script}</span>
</div> </div>
</div> </div>
<section class="section" cond="count($selected_layout->extra_var)"> <section class="section" cond="!empty((array)$selected_layout->extra_var)">
<h1>{$lang->extra_vars}</h1> <h1>{$lang->extra_vars}</h1>
{@$cnt = 1} {@$cnt = 1}
<block loop="$selected_layout->extra_var => $name, $var"> <block loop="$selected_layout->extra_var => $name, $var">

View file

@ -30,7 +30,7 @@ class TemplateHandlerTest extends \Codeception\TestCase\Test
// foreach loop // foreach loop
array( array(
'<ul><li loop="$arr=>$key,$val" class="sample"><a>Link</a><ul><li loop="$arr2=>$key2,$val2"></li></ul></li></ul>', '<ul><li loop="$arr=>$key,$val" class="sample"><a>Link</a><ul><li loop="$arr2=>$key2,$val2"></li></ul></li></ul>',
'?><ul><?php if(is_array($__Context->arr))foreach($__Context->arr as $__Context->key=>$__Context->val){ ?><li class="sample"><a>Link</a><ul><?php if(is_array($__Context->arr2))foreach($__Context->arr2 as $__Context->key2=>$__Context->val2){ ?><li></li><?php } ?></ul></li><?php } ?></ul>' '?><ul><?php if(!empty($__Context->arr))foreach((array)$__Context->arr as $__Context->key=>$__Context->val){ ?><li class="sample"><a>Link</a><ul><?php if(!empty($__Context->arr2))foreach((array)$__Context->arr2 as $__Context->key2=>$__Context->val2){ ?><li></li><?php } ?></ul></li><?php } ?></ul>'
), ),
// while loop // while loop
array( array(
@ -180,7 +180,7 @@ class TemplateHandlerTest extends \Codeception\TestCase\Test
// issue 135 // issue 135
array( array(
'<block loop="$_m_list_all=>$key,$val"><p>{$key}</p><div>Loop block {$val}</div></block>', '<block loop="$_m_list_all=>$key,$val"><p>{$key}</p><div>Loop block {$val}</div></block>',
PHP_EOL . 'if(is_array($__Context->_m_list_all))foreach($__Context->_m_list_all as $__Context->key=>$__Context->val){ ?><p><?php echo $__Context->key ?></p><div>Loop block <?php echo $__Context->val ?></div><?php } ?>' PHP_EOL . 'if(!empty($__Context->_m_list_all))foreach((array)$__Context->_m_list_all as $__Context->key=>$__Context->val){ ?><p><?php echo $__Context->key ?></p><div>Loop block <?php echo $__Context->val ?></div><?php } ?>'
), ),
// issue 136 // issue 136
array( array(
@ -190,17 +190,17 @@ class TemplateHandlerTest extends \Codeception\TestCase\Test
// issue 188 // issue 188
array( array(
'<div cond="$ii < $nn" loop="$dummy => $k, $v">Hello, world!</div>', '<div cond="$ii < $nn" loop="$dummy => $k, $v">Hello, world!</div>',
PHP_EOL . 'if($__Context->ii < $__Context->nn){;' . PHP_EOL . 'if(is_array($__Context->dummy))foreach($__Context->dummy as $__Context->k=>$__Context->v){ ?><div>Hello, world!</div><?php }} ?>' PHP_EOL . 'if($__Context->ii < $__Context->nn){;' . PHP_EOL . 'if(!empty($__Context->dummy))foreach((array)$__Context->dummy as $__Context->k=>$__Context->v){ ?><div>Hello, world!</div><?php }} ?>'
), ),
// issue 190 // issue 190
array( array(
'<div cond="!($i >= $n)" loop="$dummy => $k, $v">Hello, world!</div>', '<div cond="!($i >= $n)" loop="$dummy => $k, $v">Hello, world!</div>',
PHP_EOL . 'if(!($__Context->i >= $__Context->n)){;' . PHP_EOL . 'if(is_array($__Context->dummy))foreach($__Context->dummy as $__Context->k=>$__Context->v){ ?><div>Hello, world!</div><?php }} ?>' PHP_EOL . 'if(!($__Context->i >= $__Context->n)){;' . PHP_EOL . 'if(!empty($__Context->dummy))foreach((array)$__Context->dummy as $__Context->k=>$__Context->v){ ?><div>Hello, world!</div><?php }} ?>'
), ),
// issue 183 // issue 183
array( array(
'<table><thead><tr><th loop="$vvvls => $vvv">{$vvv}</th></tr></thead>'."\n".'<tbody><tr><td>C</td><td>D</td></tr></tbody></table>', '<table><thead><tr><th loop="$vvvls => $vvv">{$vvv}</th></tr></thead>'."\n".'<tbody><tr><td>C</td><td>D</td></tr></tbody></table>',
'?><table><thead><tr><?php if(is_array($__Context->vvvls))foreach($__Context->vvvls as $__Context->vvv){ ?><th><?php echo $__Context->vvv ?></th><?php } ?></tr></thead>'."\n".'<tbody><tr><td>C</td><td>D</td></tr></tbody></table>' '?><table><thead><tr><?php if(!empty($__Context->vvvls))foreach((array)$__Context->vvvls as $__Context->vvv){ ?><th><?php echo $__Context->vvv ?></th><?php } ?></tr></thead>'."\n".'<tbody><tr><td>C</td><td>D</td></tr></tbody></table>'
), ),
// issue 512 - ignores <marquee> // issue 512 - ignores <marquee>
array( array(