Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/daviszhto/overwrite
Segurança iOSAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoSegurança Móvel
GitHubdaviszhto/overwrite

overwrite

Aplicativo de prova de conceito para sobrescrever fontes no iOS usando CVE-2022-46689.

Ver Repositório
agorinhaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Laravel Nova Flexible Content

Um Campo Flexível fácil e completo para Laravel Nova, perfeito para grupos de campos repetidos e flexíveis.

Laravel Nova Flexible Content em ação

Início rápido

Aqui está um guia bem resumido para você começar o quanto antes. Veja a documentação completa em https://whitecube.github.io/nova-flexible-content

Instalação

root@kitploit:~
composer require whitecube/nova-flexible-content

Utilização

Um campo flexível permite o gerenciamento fácil de grupos repetíveis e ordenáveis de campos. Ao contrário das poucas soluções existentes para Laravel Nova, este não tem restrições sobre quais campos você pode usar dentro desses grupos. Isso significa que você pode usar todos os tipos de campos do Laravel Nova, assim como campos feitos pela comunidade.

Adicionando layouts

Um layout representa um grupo de campos que pode ser repetido dentro do campo Flexível. Você pode adicionar quantos layouts quiser. Se apenas um layout for definido, o campo se comportará como um Repetidor simples e, ao adicionar mais layouts, você obterá um Conteúdo Flexível. Ambos os conceitos são semelhantes aos seus primos no Plugin ACF do Wordpress.

Os layouts podem ser adicionados usando o seguinte método nos seus campos Flexíveis:

root@kitploit:~
 addLayout(string $title, string $name, array $fields)

O parâmetro $name é usado para armazenar o layout escolhido no valor do campo. Escolha-o com sabedoria; você provavelmente o usará para identificar os layouts na sua aplicação.

root@kitploit:~
use Whitecube\NovaFlexibleContent\Flexible;

/**
 * Get the fields displayed by the resource.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function fields(Request $request)
{
    return [
        // ...

        Flexible::make('Content')
            ->addLayout('Simple content section', 'wysiwyg', [
                Text::make('Title'),
                Markdown::make('Content')
            ])
            ->addLayout('Video section', 'video', [
                Text::make('Title'),
                Image::make('Video Thumbnail', 'thumbnail'),
                Text::make('Video ID (YouTube)', 'video'),
                Text::make('Video Caption', 'caption')
            ])
    ];
}

Exemplo de layouts Flexíveis

Personalizando o rótulo do botão

Você pode alterar o texto padrão do botão "Adicionar layout" assim:

root@kitploit:~
Flexible::make('Content')
    ->button('Add something amazing!');

Add something amazing

Usando valores Flexíveis nas views

Se você estiver usando Laravel 6 ou anterior, ou não quiser usar casts, por favor use um accessor no seu model com a trait HasFlexible.

O Laravel 7 traz casts personalizados para a mesa, e os campos de conteúdo flexível são o caso de uso perfeito para eles. O campo armazena seus valores como uma única string JSON, o que significa que essa string precisa ser analisada antes de poder ser usada na sua aplicação. Isso pode ser feito facilmente usando a classe FlexibleCast deste pacote:

root@kitploit:~
namespace App;

use Illuminate\Database\Eloquent\Model;
use Whitecube\NovaFlexibleContent\Value\FlexibleCast;

class MyModel extends Model
{
    protected $casts = [
        'flexible-content' => FlexibleCast::class
    ];
}

Por padrão, a classe FlexibleCast coletará instâncias básicas de Layout. Se você quiser mapear os layouts para instâncias de Layout personalizadas, isso também é possível. Primeiro, crie um cast flexível personalizado executando php artisan flexible:cast MyFlexibleCast. Isso criará o arquivo no diretório App\Casts.

Então, mapeie facilmente suas classes de layout personalizadas para as chaves adequadas:

root@kitploit:~
namespace App\Casts;

class MyFlexibleCast extends FlexibleCast
{
    protected $layouts = [
        'wysiwyg' => \App\Nova\Flexible\Layouts\WysiwygLayout::class,
        'video' => \App\Nova\Flexible\Layouts\VideoLayout::class,
    ]
}

Se você precisar de mais controle, pode sobrescrever o método getLayoutMappings.

A Coleção de Layouts

As coleções retornadas pelo cast FlexibleCast e pela trait HasFlexible estendem a Illuminate\Support\Collection original. Essas coleções de layout personalizadas expõem um método find(string $name) que retorna o primeiro layout que tenha o $name de layout fornecido.

A instância de Layout

Os layouts são uma espécie de falsos models. Eles usam o trait HasAttributes do Laravel, o que significa que você pode definir accessors & mutators para os atributos do layout. Além disso, também é possível acessar as propriedades do Layout usando os seguintes métodos:

name()

Retorna o nome do layout.

title()

Retorna o título do layout (como mostrado no Nova).

key()

Retorna a chave única do layout (o identificador exclusivo do layout).

Indo além

Ao usar o campo de Conteúdo Flexível, você logo encontrará alguns casos de uso em que o básico descrito acima não é suficiente. Por isso, desenvolvemos o pacote de forma extensível, tornando possível adicionar facilmente comportamentos e/ou capacidades personalizadas ao Campo e à sua saída.

Classes de Layout Personalizadas

Às vezes, as definições de addLayout podem ficar bastante longas, ou talvez você queira que elas sejam compartilhadas com outros campos Flexible. A resposta para isso é extrair seu Layout para uma classe própria. Veja a documentação para mais informações sobre isso.

Classes de Preset Predefinidas

Além de classes de Layout reutilizáveis, você pode ir um passo além e criar classes Preset para seus campos Flexíveis. Elas permitem reutilizar todo o seu campo Flexível em qualquer lugar que desejar. Também facilitam a criação de campos Flexíveis dinâmicos, por exemplo, se você quiser adicionar Layouts condicionalmente. E, por último, mas não menos importante, elas também têm o benefício adicional de limpar suas classes de Recurso do Nova, se o seu campo Flexível tiver muitas definições de addLayout. Veja a documentação para mais informações sobre isso.

Classes de Resolver Personalizadas

Por padrão, o campo aproveita uma coluna JSON na tabela do seu model. Em alguns casos, você realmente gostaria de usar este campo, mas por algum motivo um atributo JSON não é o caminho a seguir. Por exemplo, você pode querer armazenar os valores em outra tabela (o que significa que você usará o campo de Conteúdo Flexível em vez de um campo tradicional BelongsToMany ou HasMany). Não se preocupe, nós temos você coberto!

Diga ao campo como armazenar e recuperar seu conteúdo criando sua própria classe Resolver, que basicamente contém apenas dois métodos simples: get e set. Veja a documentação para mais informações sobre isso.

Uso com nova-page

Talvez você tenha ouvido falar de um dos nossos outros pacotes, o nova-page, que é uma Ferramenta do Nova que permite editar páginas estáticas como uma página "Sobre" (ou similar) sem precisar declarar um model para ela individualmente. Na maioria das vezes, o Campo de Conteúdo Flexível é muito útil. Não se preocupe, ambos os pacotes funcionam bem juntos! Primeiro, crie um template de página do nova e adicione um conteúdo flexível aos campos do template.

Como explicado na documentação, você pode acessar o conteúdo estático do nova-page em suas views blade usando {{ Page::get('attribute') }}. Ao solicitar o conteúdo flexível dessa forma, ele retorna uma string JSON bruta descrevendo o conteúdo flexível, o que, é claro, não é muito útil. Em vez disso, você pode simplesmente implementar a trait Whitecube\NovaFlexibleContent\Concerns\HasFlexible nos seus Templates de página, o que exporá o método de fachada Page::flexible('attribute') e cuidará da transformação do conteúdo flexível.

root@kitploit:~
namespace App\Nova\Templates;

// ...
use Whitecube\NovaFlexibleContent\Concerns\HasFlexible;

class Home extends Template
{
    use HasFlexible;

    // ...
}

💖 Patrocínios

Se você depende deste pacote em suas aplicações de produção, considere nos patrocinar! É a melhor maneira de nos ajudar a continuar fazendo o que amamos: criar ótimos softwares de código aberto.

Contribuindo

Sinta-se à vontade para sugerir mudanças, pedir novos recursos ou corrigir bugs você mesmo. Temos certeza de que ainda há muitas melhorias a serem feitas, e ficaríamos muito felizes em mesclar pull requests úteis.

Obrigado!

Testes unitários

Ao adicionar um novo recurso ou corrigir um bug, adicione os testes unitários correspondentes. O conjunto atual de testes é limitado, mas cada teste unitário adicionado melhorará a qualidade do pacote.

Execute o PHPUnit chamando composer test.

Feito com ❤️ para código aberto

Na Whitecube, usamos muito software de código aberto como parte do nosso trabalho diário. Então, quando temos a oportunidade de retribuir algo, ficamos super animados!

Esperamos que você goste desta pequena contribuição nossa e adoraríamos ouvir de você se achá-la útil em seus projetos. Siga-nos no Twitter para mais atualizações!

Baixar ferramenta