Merge remote-tracking branch 'rxu3/ticket/12224' into develop

* rxu3/ticket/12224:
  [ticket/12224] Add assign_block_vars_array() test.
  [ticket/12224] Add template wrapper method to assign block arrays
This commit is contained in:
Joas Schilling 2014-03-10 23:49:37 +01:00
commit 235f7c3721
4 changed files with 68 additions and 0 deletions

View file

@ -110,6 +110,16 @@ abstract class base implements template
return $this;
}
/**
* {@inheritdoc}
*/
public function assign_block_vars_array($blockname, array $block_vars_array)
{
$this->context->assign_block_vars_array($blockname, $block_vars_array);
return $this;
}
/**
* {@inheritdoc}
*/

View file

@ -199,6 +199,22 @@ class context
return true;
}
/**
* Assign key variable pairs from an array to a whole specified block loop
*
* @param string $blockname Name of block to assign $block_vars_array to
* @param array $block_vars_array An array of hashes of variable name => value pairs
*/
public function assign_block_vars_array($blockname, array $block_vars_array)
{
foreach ($block_vars_array as $vararray)
{
$this->assign_block_vars($blockname, $vararray);
}
return true;
}
/**
* Change already assigned key variable pair (one-dimensional - single loop entry)
*

View file

@ -131,6 +131,14 @@ interface template
*/
public function assign_block_vars($blockname, array $vararray);
/**
* Assign key variable pairs from an array to a whole specified block loop
* @param string $blockname Name of block to assign $block_vars_array to
* @param array $block_vars_array An array of hashes of variable name => value pairs
* @return \phpbb\template\template $this
*/
public function assign_block_vars_array($blockname, array $block_vars_array);
/**
* Change already assigned key variable pair (one-dimensional - single loop entry)
*

View file

@ -562,6 +562,40 @@ EOT
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Ensuring S_NUM_ROWS is correct after modification');
}
public function assign_block_vars_array_data()
{
return array(
array(
array(
'outer' => array(
array('VARIABLE' => 'Test assigning block vars array loop 0:'),
array('VARIABLE' => 'Test assigning block vars array loop 1:'),
),
'outer.middle' => array(
array('VARIABLE' => '1st iteration',),
array('VARIABLE' => '2nd iteration',),
array('VARIABLE' => '3rd iteration',),
),
)
)
);
}
/**
* @dataProvider assign_block_vars_array_data
*/
public function test_assign_block_vars_array($block_data)
{
$this->template->set_filenames(array('test' => 'loop_nested.html'));
foreach ($block_data as $blockname => $block_vars_array)
{
$this->template->assign_block_vars_array($blockname, $block_vars_array);
}
$this->assertEquals("outer - 0 - Test assigning block vars array loop 0:outer - 1 - Test assigning block vars array loop 1:middle - 0 - 1st iterationmiddle - 1 - 2nd iterationmiddle - 2 - 3rd iteration", $this->display('test'), 'Ensuring assigning block vars array to template is working correctly');
}
/**
* @expectedException Twig_Error_Syntax
*/