【问题标题】:Phalcon Custom Tag templatePhalcon 自定义标签模板
【发布时间】:2023-04-01 20:07:01
【问题描述】:

有什么方法可以在 Phalcon 中为自定义标签创建视图,这样我就可以传递要渲染的参数了吗?

class MenuModule extends \Phalcon\Tag {
    public static function initialize($param) {
        return $param;
    }
}

在我看来我可以打电话

echo MenuModule::initialize('Home Page');

我想要做的是像这样传递数组:

$menu = array('Home','About','Contact');
echo MenuModule::initialize($menu);

然后在 Tag Helper 中调用子视图来呈现该数组,而不是像这样:

class MenuModule extends \Phalcon\Tag {
    public static function initialize($param) {
        $menu = '<ul>';
        foreach($param as $p) {
            $menu .= '<li>' . $p . '</li>';
        }
        $menu .= '</ul>';
        return $menu;
    }
}

这并不复杂,但由于 HTML 文件较大,我想使用视图而不是在 PHP 中生成 HTML。

请问我该怎么做?

【问题讨论】:

    标签: phalcon


    【解决方案1】:

    我在 Phalcon 官方文档中找到了解决方案,Tag ServiceCreating your own helpers

    <?php
    use Phalcon\Tag;
    
    class MenuModule extends Tag {
        static public function initialize($param) {
            $menu = '<ul>';
            foreach($param as $p) {
                $menu .= '<li>' . $p . '</li>';
            }
            $menu .= '</ul>';
    
            return $menu;
        }
    }
    

    然后修改服务‘tag’的定义:

    $di['tag'] = function () {
        return new MenuModule();
    };
    

    然后在 volt 中访问它:

    {{ MenuModule::initialize($param) }}
    

    【讨论】:

    • 在哪里“然后改变服务‘标签’的定义”?
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2021-07-13
    • 2019-12-30
    • 2011-12-09
    • 2012-03-15
    • 2015-12-17
    • 2019-01-29
    相关资源
    最近更新 更多