如何将多个参数传递给smarty函数?

时间:2014-02-17 14:09:28

标签: php smarty argument-passing function-call function-parameter

我有一个来自smarty模板的以下代码段:

<div class="pagination">
  {pagination_link_01 values=$pagination_links}
</div>

以下是功能正文:

<?php

function smarty_function_pagination_link_01($params, &$smarty)
{

    if ( !is_array($params['values']) )
    {
      return "is not array";
    }
    if ( 0 == count($params['values']) )
    {
      return "Empty Array";
    }
    if ( empty($params['values']['current_page']) )
    {
      return "Invalid Request";
    }

    $values = $params['values'];

    //Seperator Used Betwinn Pagination Links
    $seprator = empty( $params['seperator'] ) ? "&nbsp;&nbsp;" : $params['seperator'];

    //Class Name For Links
    $extra = empty( $params['extra'] ) ? "" : $params['extra'];

    $current_page  = (int)$values['current_page'];

    if ( !empty($values['first']) )
    {
        //$ret[] = "<a $extra href='{$values['first']}' >&lt;First</a>";
    }
    if ( !empty($values['previous'] ) )
    {
        $ret[] = "<a $extra href='{$values['previous']}' class='prev active'><span></span></a>";                
    }
    $ret[] = "<ul>";
    foreach( $values as $k => $v )
    {
          if( is_numeric( $k ) )
          {
                if ( $k == $current_page)
                {
                    $ret[] = "<li><a $extra class='active'>$k</a></li>";
                }
                else
                {

                    $ret[] = "<li><a $extra href='$v'>$k </a></li>";

                }
          }
    }

    if ( !empty($values['next'] ) )
    {
        $ret[] = "</ul><a $extra href='{$values['next']}' class='next active'><span></span></a>";

    }

    if ( !empty($values['last'] ) )
    {
        //$ret[] = "<a $extra href='{$values['last']}' >Last&gt;</a>";
    }

    //$str_ret = $first . $previous . $str_ret . $next . $last;
    if ( $ret )
    {
        return implode( $seprator, $ret );
    }
}
?>

如果我打印$params我通过数组$pagination_links得到了我传递的值。类似地,我想在上面的函数调用中再添加一个名为$total_pages的参数,并在函数体中使用它。我尝试了很多方法,但不可能发生。任何人都可以请这方面指导我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

你这样称呼它,其中$ pages是你要传递的变量:

<div class="pagination">
  {pagination_link_01 values=$pagination_links total_pages=$pages}
</div>

然后在函数

if isset($params['total_pages'])
{
... do something with $params['total_pages']...
}

答案 1 :(得分:0)

你没有发布很多代码,但是你不能把它传递给函数吗?

使用您的变量调用您的函数。 smarty_function_pagination_link_01($params,&$smarty, $total_pages);

e.g.

function smarty_function_pagination_link_01($params, &$smarty, $total_pages)
{