(16) 981791110 contato@policast.studio

O que é o componente Lista do Symfony?

O componente Lista do Symfony é uma extensão que facilita a criação de listas em projetos Symfony. Ele fornece uma maneira fácil de criar uma lista com colunas e linhas, com a opção de personalizar o conteúdo das células. Essa extensão é particularmente útil para exibir dados em tabelas em aplicações web.

Como usar o componente Lista do Symfony?

Para usar o componente Lista do Symfony, é preciso instalá-lo por meio do gerenciador de dependências do Symfony, o Composer. Para isso, basta executar o seguinte comando na raiz do projeto:

composer require symfony/list

Após a instalação, é preciso criar uma classe de lista que estenda a classe SymfonyComponentDependencyInjectionContainerAwareInterface e implemente a interface SonataAdminBundleDatagridListBuilderInterface. A classe de lista deve definir o nome das colunas, o campo de ordenação e o conteúdo da célula.

Por exemplo, suponha que você queira criar uma lista de usuários com as colunas “Nome” e “Email”. Para isso, você poderia criar a seguinte classe de lista:


namespace AppAdmin;

use AppEntityUser;
use SonataAdminBundleDatagridListBuilderInterface;
use SymfonyComponentDependencyInjectionContainerAwareInterface;
use SymfonyComponentDependencyInjectionContainerAwareTrait;

class UserList implements ContainerAwareInterface, ListBuilderInterface
{
use ContainerAwareTrait;

public function buildList(array $options = []): void
{
$this->add('name', null, ['label' => 'Nome']);
$this->add('email', null, ['label' => 'Email']);
}

public function getIdentifierField(): string
{
return 'id';
}

public function getIdentifier(): string
{
return 'user_list';
}

public function getObject(): string
{
return User::class;
}
}

Para usar a classe de lista em um controlador Symfony, basta criar uma instância da classe e chamar o método getDatagrid:


use AppAdminUserList;
use SonataAdminBundleControllerCoreController;

class UserController extends CoreController
{
public function indexAction()
{
$list = new UserList();
$datagrid = $list->getDatagrid();

//...
}
}

Quais são as opções disponíveis para personalizar a lista?

O componente Lista do Symfony fornece várias opções para personalizar a lista. Algumas das opções mais comuns incluem:

  • label: O rótulo da coluna.
  • field_type: O tipo de campo usado para renderizar a célula.
  • template: O caminho do template usado para renderizar a célula.
  • editable: Define se a célula pode ser editada.

Essas opções podem ser definidas passando um array como terceiro parâmetro do método add.


$this->add('name', null, ['label' => 'Nome', 'editable' => true]);

Além dessas opções, existem também vários eventos disponíveis para personalizar o comportamento da lista.