swoopaholic / components
swoopaholic 组件集合
0.2.1
2015-10-29 10:04 UTC
Requires
- php: >=5.3.3
This package is not auto-updated.
Last update: 2024-09-28 16:25:50 UTC
README
此组件包用于解耦逻辑与视图渲染。使用与渲染无关的代码,可以创建更灵活地使用不同模板或前端模板(如mustache)的方式。
使用方法
即将到来...
目前,要启用表格组件的依赖注入
在 BundleNameExtension 类中
$tableLoader = new Loader\XmlFileLoader($container, new FileLocator($container->getParameter('kernel.root_dir') . '/../vendor/swoopaholic/components/Swoopaholic/Component/Table/Resources/config')); $tableLoader->load('twig.xml'); $tableLoader->load('table.xml');
在 Bundle 类中
... use Swoopaholic\Component\Table\Extension\DependencyInjection\Compiler\TablePass; use Swoopaholic\Component\Table\Extension\DependencyInjection\Compiler\TableTemplatePass; ... public function build(ContainerBuilder $container) { $container->addCompilerPass(new TablePass()); $container->addCompilerPass(new TableTemplatePass()); }
定义 CRUD 表格
<?php namespace Namespace\Bundle\MyBundle\CrudTable; use Swoopaholic\Component\Table\Extension\Crud\Type\TableType; use Swoopaholic\Component\Table\TableBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class UserType extends TableType { public function setDefaultOptions(OptionsResolverInterface $resolver) { parent::setDefaultOptions($resolver); $resolver->setRequired(array('data')); } public function buildTable(TableBuilderInterface $builder, array $options) { $this ->addColumn('username', 'text', array('label' => 'Naam', 'sort' => 'username')) ->addColumn('email', 'text', array('label' => 'E-mail', 'sort' => 'email')) ->addColumn('enabled', 'text', array('label' => 'Enabled')) ->addColumn('last_login', 'datetime', array('label' => 'Ingelogd op', 'sort' => 'lastLogin')); parent::buildTable($builder, $options); } public function buildRowActions($builder, $cell, $item, array $options) { $group = $builder->create('group', 'crud_action_group', array()); $group->add('show', 'crud_action', array( 'icon' => 'eye-open', 'url' => $this->router->generate('nvs_framework_user_show', array('id' => $item->getId())), 'label' => 'Bekijken', 'attr' => array('data-rowclick' => '') )); $group->add('edit', 'crud_action', array( 'icon' => 'eye-open', 'url' => $this->router->generate('nvs_framework_user_edit', array('id' => $item->getId())), 'label' => 'Bewerken', 'attr' => array('data-rowclick' => '') )); $cell->add($group); } public function getParent() { return 'table'; } public function getName() { return 'user'; } }
要使用新的 CRUD 表格,在控制器/操作中
$data = $this->getData() $tableFactory = $this->get('table.factory'); $table = $tableFactory->create( 'user', $data, array('table_route' => $route, 'responsive' => true) );