如何在smarty中获取foreach循环的最后一个索引值,对于smarty我是新的,我已经使用了这个代码,但它不起作用
{foreach from=$cityList key=myId item=i name=foo}
{$i.location_name}{if $main_smarty.foreach.foo.last}<hr>{else}-{/if}
{/foreach}
Run Code Online (Sandbox Code Playgroud)
我想要的是,当它们是最后一个城市名称之后它的水平线,否则它就像印度 - 美国 - 日本 - 但最后它来到日本 - 中国
在.php我用
<?php
include_once('Smarty.class.php');
$main_smarty = new Smarty;
query to find citylist
$main_smarty->assign('cityList',$cityList);
?>
Run Code Online (Sandbox Code Playgroud) 我有一个标题$preview_data分配给smarty模板的数组,如下所示:
Array
(
[applicable_states] => Array
(
[0] => 1
[1] => 3
[2] => 4
[3] => 10
[4] => 11
)
)
Run Code Online (Sandbox Code Playgroud)
现在我想在smarty模板的div元素中将上述数组元素显示为逗号分隔值.简而言之,它应该像php中的implode()一样.有人可以帮助我在smarty模板中实现这一目标吗?提前致谢.
在Smarty中,有没有标准函数或从数组生成json的简单方法,就像json_encode()在php中一样?实际上似乎没有聪明的文档,但无论如何都想问.
谢谢,思南.
是否可以检查没有启动会话的会话?
我问的原因是,我正在开发的应用程序有一个集成的管理界面.因此,当管理员登录时,他们浏览与用户相同的页面以进行编辑.字段和选项基于用户privs显示.
这导致了两个问题.
一个是因为会话正在启动,我无法启用浏览器缓存功能,因为发送的标头始终是:
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Run Code Online (Sandbox Code Playgroud)
我使用smarty输出模板,并且无法实现:
$smarty->cache_modified_check = true;
Run Code Online (Sandbox Code Playgroud)
发送304未修改,因为会话已经启动.使用上面的smarty param将是我浏览器缓存的完美解决方案.
二是因为每个使用该站点的人都在启动一个会话,会话目录中充满了不需要的会话.
如果用户没有登录,我可以破坏会话,但是每个页面加载,用户将创建和删除会话.这是不好的做法吗?
因此,如果我可以检查是否存在活动会话而不启动,我的所有问题都将得到解决.有任何想法吗?浏览器在请求页面时是否发送会话cookie?
if (session_exists) {
session_start();
$users->priv = $_SESSION['priv'];
}
else {
$users->priv = guest;
}
Run Code Online (Sandbox Code Playgroud)
---------------回应Tony Miller ---------------
使用session_id()时,您必须已经启动会话以返回id.
session_start();
echo session_id($_SESSION);
Run Code Online (Sandbox Code Playgroud)
或者您可以在调用会话开始之前为会话设置ID
session_id("adfasdf");
session_start();
echo session_id($_SESSION);
//prints "adfasdf"
Run Code Online (Sandbox Code Playgroud)
这些都不能帮助我.除非我遗漏了什么.
我正在使用Smarty,其中一个节目显示文件名,包括日期,文件大小,最后访问等...
如果小于1024,我想在K中显示文件的大小,如果小于1048576等,则以Mb显示...
数据(文件信息)来自数据库(名称,文件大小,日期等...)
例如:
File Mime Size Date
Filename1.jpg mime/jpg 14.1Kb 2011/12/12
Run Code Online (Sandbox Code Playgroud)
Smarty中是否有任何修饰符可以做到这一点?
谢谢
Array $imagelist:
Array (
[additional] => Array (
[count] => 2
[image] => Array (
[nokia_e61_1.jpg] => Array (
[name_body] => nokia_e61_1
[name_ext] => jpg
)
[nokia_e61_2.jpg] => Array (
[name_body] => nokia_e61_2
[name_ext] => jpg
)
[nokia_e61_3.jpg] => Array (
[name_body] => nokia_e61_3
[name_ext] => jpg
)
[nokia_e61_4.jpg] => Array (
[name_body] => nokia_e61_4
[name_ext] => jpg
)
)
)
[main] => nokia_e61
)
Run Code Online (Sandbox Code Playgroud)
该值nokia_e61_1.jpg保留在{$getvars.imagename}.
我写了,{$imagelist.additional.image.`$getvars.imagename`.name_body}但它不起作用.
请帮忙.
我得到约会: {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
但如何获得20天后呢?
如果现在:2010 05 05 12:12:12,我希望表明2010 25 05 12:12:12
我使用以下Smarty代码:
{foreach from=$entries key=i item=topic}
{if $topic.topic_style == question}
<li>
<a href="topic.php?id={$topic.id}">{$topic.title}</a>
</li>
{/if}
{/foreach}
Run Code Online (Sandbox Code Playgroud)
我怎样才能{foreach}最多10次然后停止?
我通常不是一个Smarty人,所以我有点卡住了.
我想回显数组的索引,但我希望每次回显时都增加它.
这就是我所拥有的......
<ul>
{foreach from=$gallery key=index item=image}
<li>
<img src="{$image}" alt="" id="panel-{$index++}" />
</li>
{/foreach}
</ul>
Run Code Online (Sandbox Code Playgroud)
它不起作用.
在将数组交给Smarty之前,这是预处理数组的最佳方法吗?
有没有办法可以使用Smarty做到这一点?