midgard/toolbar-bundle

此包已被废弃,不再维护。未建议替换包。

Symfony2应用的工具栏处理

安装: 10

依赖者: 0

建议者: 0

安全: 0

星标: 6

关注者: 0

分支: 0

开放问题: 1

类型:symfony-bundle

dev-master 2012-06-22 10:54 UTC

This package is not auto-updated.

Last update: 2020-01-24 14:59:54 UTC


README

此包为Symfony2应用提供简单的工具栏。工具栏由可能具有图标、标签和快捷键的按钮组成。按钮可以在URL上触发GET或POST操作。

工具栏的设计理念与MidCOM框架中的工具栏概念非常相似。

如果您正在寻找导航菜单而不是面向动作的工具栏,那么KnpMenuBundle是更好的选择。

安装

通过将以下内容添加到deps文件并运行php bin/vendors install来安装此包

[MidgardToolbarBundle]
    git=git://github.com/bergie/MidgardToolbarBundle.git
    target=Midgard/ToolbarBundle

然后将Midgard命名空间添加到app/autoload.php

'Midgard' => __DIR__.'/../vendor'

并在您的Kernel中启用此包

new Midgard\ToolbarBundle\MidgardToolbarBundle()

用法

工具栏可以直接使用或通过工具栏提供者使用。直接工具栏适用于您想要为列表中的每个项目添加工具栏等场景。通过工具栏提供者使用的工具栏可以用于Web应用中的共享工具栏,其中应用的不同部分可以将其自己的动作注册到工具栏中。

直接工具栏

use Midgard\ToolbarBundle\Toolbar\Toolbar;

$toolbar = new Toolbar();

// GET action
$toolbar->addItem(
    array(
        'url' => '/login',
        'label' => 'Log in',
        'icon' => '/web/some-icon.png',
        'helptext' => 'Log in to the system',
    )
);

// POST action
$toolbar->addItem(
    array(
        'url' => '/myformprocessor',
        'label' => 'Delete',
        'post' => true,
        'hiddenargs' => array(
            'article_id' => 1,
        ),
    )
);

echo $toolbar->render();

除了提供对addItem方法的直接URL之外,您还可以让Symfony2路由器为您生成它们。在这种情况下,以数组格式提供URL,例如

$toolbar->addItem(
    array(
        'url' => array(
            'route' => '_demo_hello',
            'parameters' => array(
                'name' => 'World',
            ),
        ),
        'label' => 'Say hello',
    )
);

为了使URL生成工作,您需要通过setContainer方法将依赖注入容器传递给工具栏。下面解释的集中式工具栏会自动执行此步骤。

集中式工具栏

集中式工具栏可以通过名称从提供者访问。您可以有多个。例如,Midcom兼容性包使用了四个

  • view:与页面主要对象关联的工具栏(如“编辑”操作)
  • node:与提供当前视图的包关联的工具栏(如“添加”操作)
  • host:网站范围的工具栏(如“登出”操作)
  • help:访问上下文帮助

快速使用示例

$toolbar = $this->container->get('midgard.toolbar.provider')->get('main');
$toolbar->addItem(...);

echo $this->container->get('midgard.toolbar.provider')->render('main');
// or echo $toolbar->render();