【问题标题】:How to pass multiple arguments to a smarty function?如何将多个参数传递给 smarty 函数?
【发布时间】:2023-04-04 14:44:01
【问题描述】:

我有以下来自 smarty 模板的代码 sn-p:

<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 的参数,并在函数体中使用它。我尝试了很多方法,但它不可能发生。任何人都可以请在这方面指导我。提前致谢。

【问题讨论】:

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


    【解决方案1】:

    您没有发布太多代码,但您不能将其传递给函数吗?

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

    e.g.
    
    function smarty_function_pagination_link_01($params, &$smarty, $total_pages)
    {
    

    【讨论】:

      【解决方案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']...
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 2016-01-17
        • 1970-01-01
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多