【问题标题】:Why the values are not getting printed in smarty template?为什么值没有打印在 smarty 模板中?
【发布时间】:2014-01-22 11:12:44
【问题描述】:

分配给smarty模板的数组$data如下:

Array
(
    [pt_id] => 2
    [pt_doc_title] => Happy New Year
    [pt_doc_id] => 
    [delete_flag] => 
    [pt_doc_file_iname] => array.txt
)

为了将它分配给 smarty 模板,我使用了以下代码行:

$smarty->assign('data', $data);

现在这个数组现在只包含一个元素,但是这个数组中可能会有更多这样的元素,因为这个数组是动态生成的。因此,为了访问我编写了以下代码的值,但我不再获得那里的值。

{foreach from=$data item=titles key=key}
            <li id="ttl{$key+1}" class="ans_li">
              <span class="num-block">{$key+1}&nbsp;&nbsp;&nbsp;</span>
              <label>{'Document Title'|signal_on_error:$error_msg:'correct_ans'} <span class="reqd"> * </span></label>
              <input type="text" name="pt_doc_title[{$key+1}]" id="pt_doc_title_{$key+1}" value="{$titles.pt_doc_title}">
              <p class="uploadBtn"><input type="file" name="document_file_name_{$key+1}" id="document_file_name_{$key+1}">
              </p>
              {if $titles.pt_doc_file_iname!= ""}
                <a href="package_type_documents.php?op=download&pt_id={$titles.pt_id}&pt_doc_id={$titles.pt_doc_id}" style="font-size:small;">{$titles.pt_doc_file_iname}</a>

                <input type="checkbox" name="delete_file_{$key+1}" id="delete_file_{$key+1}" class="custom-check" />
                <label for="show">Delete file</label>                
              {else}                             
                <p class="custom-form">
                <a href="#" id="ttl{$key+1}" onclick="delete_title(this.id);return false;" class="c-delete">Delete</a>
                </p>                
              {/if}
              <input type="hidden" name="pt_doc_id[{$key}]" value="{$titles.pt_doc_id}">
              {if $titles.pt_doc_file_iname!=''}
              <input type="hidden" name="pt_doc_file_iname[{$key}]" value="{$titles.pt_doc_file_iname}">  
              {/if}
            </li>
            {/foreach}

那么我在 smarty 中访问上述数组时是否犯了任何错误?请帮助我纠正我的问题。提前致谢。

【问题讨论】:

  • 看起来你有一个包含超过 1 个元素的数组?
  • @Nanne:在上面的情况下
  • 如果 data 是一个数组数组,你可以将这个数组作为单个元素,但现在它是一个包含多个元素的数组。也许您打算将该数组分配给$data[],或者执行$smarty-&gt;assign('data', array(data));

标签: php foreach smarty


【解决方案1】:

尝试为您的阵列使用multidimensional array

类似的东西。

   $data = array
    (
        0 => array(
            'pt_id' => 2,
            'pt_doc_title' => 'Happy New Year',
            'pt_doc_id' => ,
            'delete_flag' => ,
            'pt_doc_file_iname' => 'array.txt'
         )
         1 => array(
            'pt_id' => 3,
            'pt_doc_title' => 'Some other title',
            'pt_doc_id' => ,
            'delete_flag' => ,
            'pt_doc_file_iname' => 'array2.txt'
         )

    )

$smarty->assign('data', $data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2020-06-18
    相关资源
    最近更新 更多