如何在 smarty 中包含助手?

发布于 2024-10-05 11:02:09 字数 381 浏览 5 评论 0原文

我想在 smarty 模板中使用助手的静态函数。我使用 ko3 和 kohana-module-smarty - https://github.com/MrAnchovy/kohana- module-smarty/ 所以我的问题是如何自动加载助手并在模板中使用它,即:

app/class/url.php


class url {
功能测试() {
返回“测试”;
}
}


视图/index.tpl


{$url.test}

Id like to use static functions from helpers in a smarty template. Im using ko3 and kohana-module-smarty - https://github.com/MrAnchovy/kohana-module-smarty/ so my question is how to autoload helper and use it in a template, ie:

app/class/url.php


class url {
function test () {
return 'test';
}
}


views/index.tpl


{$url.test}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丶情人眼里出诗心の 2024-10-12 11:02:09

您应该能够将 Url 作为变量 $url 传递,并使用 {$url->test()}.我不确定您是否能够访问像 Url::test() 这样的静态函数。

如果您在同一视图中使用助手,则可以创建一个新控制器来绑定视图中的变量:

<?php
// application/classes/controller/site.php
class Controller_Site extends Controller_Template
{
    public $template = 'smarty:my_template';

    public function before()
    {
        $this->template->set_global('url_helper', new Url);
    }
}
?>

然后在其他控制器中扩展它:

<?php
// application/classes/controller/welcome.php
class Controller_Welcome extends Controller_Site
{
    public function action_index()
    {
        $this->template->content = 'Yada, yada, yada...';
    }
}

并在视图中访问它:

{* application/views/my_template.tpl *}
<p>This is a {$url_helper->test()}.</p>
<p>{$content}</p>

You should be able to pass Url as a variable, $url, and access it within your view with {$url->test()}. I'm not sure if you would be able to access static functions like Url::test() though.

If you're using a helper in the same views, you can create a new controller that binds the variable in the view:

<?php
// application/classes/controller/site.php
class Controller_Site extends Controller_Template
{
    public $template = 'smarty:my_template';

    public function before()
    {
        $this->template->set_global('url_helper', new Url);
    }
}
?>

Then extend it in your other controllers:

<?php
// application/classes/controller/welcome.php
class Controller_Welcome extends Controller_Site
{
    public function action_index()
    {
        $this->template->content = 'Yada, yada, yada...';
    }
}

And access it within your views:

{* application/views/my_template.tpl *}
<p>This is a {$url_helper->test()}.</p>
<p>{$content}</p>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文