Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/daviszhto/overwrite
Sicurezza iOSAnalisi delle VulnerabilitàExploitPenetration TestingSicurezza Mobile
GitHubdaviszhto/overwrite

overwrite

Proof-of-concept per iOS che dimostra la sovrascrittura dei font tramite CVE-2022-46689 per ricerca sulla sicurezza e test delle vulnerabilità.

Vedi Repository
81 anno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Laravel Nova Flexible Content

Un campo Flexible facile e completo per Laravel Nova, perfetto per gruppi di campi ripetibili e flessibili.

Laravel Nova Flexible Content in azione

Avvio rapido

Ecco una guida molto sintetica per iniziare subito. Consulta la documentazione completa su https://whitecube.github.io/nova-flexible-content

Installazione

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

Utilizzo

Un campo flexible permette una gestione facile di gruppi di campi ripetibili e ordinabili. A differenza delle poche soluzioni esistenti per Laravel Nova, questo non ha vincoli su quali campi puoi usare all'interno di questi gruppi. Ciò significa che puoi usare tutti i tipi di campo di Laravel Nova e anche i campi creati dalla community.

Aggiungere layout

Un layout rappresenta un gruppo di campi che può essere ripetuto all'interno del campo Flexible. Puoi aggiungere tutti i layout che desideri. Se viene definito un solo layout, il campo si comporterà come un semplice Repeater; aggiungendo più layout otterrai invece un Flexible Content. Entrambi i concetti sono simili ai loro cugini nel plugin ACF di WordPress.

I layout possono essere aggiunti utilizzando il seguente metodo sui tuoi campi Flexible:

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

Il parametro $name viene usato per salvare il layout scelto nel valore del campo. Sceglilo con attenzione: probabilmente lo userai per identificare i layout nella tua applicazione.

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')
            ])
    ];
}

Esempio di layout Flexible

Personalizzare l'etichetta del pulsante

Puoi modificare il testo predefinito del pulsante "Aggiungi layout" in questo modo:

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

Aggiungi qualcosa di fantastico

Utilizzare i valori Flexible nelle viste

Se stai usando Laravel 6 o versioni precedenti, o non vuoi usare i cast, utilizza un accessor sul tuo modello con il trait HasFlexible](https://whitecube.github.io/nova-flexible-content/#/?id=with-the-hasflexible-trait).

Laravel 7 introduce i cast personalizzati e i campi Flexible Content sono il caso d'uso perfetto per essi. Il campo salva i suoi valori come una singola stringa JSON, quindi questa stringa deve essere analizzata prima di poter essere utilizzata nella tua applicazione. Può essere fatto banalmente usando la classe FlexibleCast inclusa in questo pacchetto:

root@kitploit:~
namespace App;

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

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

Di default, la classe FlexibleCast raccoglie istanze Layout di base. Se vuoi mappare i layout in istanze di Layout personalizzate, è anche possibile. Per prima cosa crea un cast flexible personalizzato eseguendo php artisan flexible:cast MyFlexibleCast. Questo creerà il file nella directory App\Casts.

Poi mappa facilmente le tue classi di layout personalizzate alle chiavi appropriate:

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 hai bisogno di più controllo, puoi sovrascrivere il metodo getLayoutMappings.

La Collection di Layout

Le Collection restituite dal cast FlexibleCast e dal trait HasFlexible estendono la classe originale Illuminate\Support\Collection. Queste Collection di layout personalizzate espongono un metodo find(string $name) che restituisce il primo layout con il $name indicato.

L'istanza di Layout

I layout sono una sorta di fake models. Usano il trait HasAttributes di Laravel, il che significa che puoi definire accessor e mutator per gli attributi del layout. Inoltre, è anche possibile accedere alle proprietà del Layout tramite i seguenti metodi:

name()

Restituisce il nome del layout.

title()

Restituisce il titolo del layout (come mostrato in Nova).

key()

Restituisce la chiave univoca del layout (l'identificatore univoco del layout).

Per approfondire

Quando utilizzi il campo Flexible Content, ti imbatterai presto in casi d'uso per cui le basi descritte sopra non bastano. Per questo abbiamo sviluppato il pacchetto in modo estendibile, rendendo possibile aggiungere facilmente comportamenti e/o capacità personalizzati al campo e al suo output.

Classi di Layout personalizzate

A volte le definizioni addLayout possono diventare piuttosto lunghe, o magari vuoi condividerle con altri campi Flexible. La risposta è estrarre il tuo Layout in una propria classe. Consulta la documentazione per maggiori informazioni.

Classi di Preset predefinite

Oltre alle classi di Layout riutilizzabili, puoi fare un passo avanti e creare classi Preset per i tuoi campi Flexible. Queste ti permettono di riutilizzare l'intero campo Flexible dove vuoi. Rende inoltre più semplice rendere dinamici i tuoi campi Flexible, ad esempio se vuoi aggiungere Layout condizionalmente. E, ultimo ma non meno importante, hanno anche il vantaggio di ripulire le tue classi di risorse Nova, se il tuo campo Flexible ha molte definizioni addLayout. Consulta la documentazione per maggiori informazioni.

Classi di Resolver personalizzate

Di default, il campo sfrutta una colonna JSON nella tabella del tuo modello. In alcuni casi, vorresti davvero usare questo campo, ma per qualche motivo un attributo JSON non è la strada giusta. Ad esempio, potresti voler salvare i valori in un'altra tabella (il che significa usare il campo Flexible Content invece di un tradizionale campo BelongsToMany o HasMany). Nessun problema, ci pensiamo noi!

Indica al campo come salvare e recuperare il suo contenuto creando una tua classe Resolver, che in pratica contiene solo due semplici metodi: get e set. Consulta la documentazione per maggiori informazioni.

Utilizzo con nova-page

Forse hai sentito parlare di uno dei nostri altri pacchetti, nova-page, che è un Nova Tool che consente di modificare pagine statiche come una pagina "About" (o simili) senza dover dichiarare un modello per essa singolarmente. Molto spesso, il campo Flexible Content torna utile. Non preoccuparti, entrambi i pacchetti funzionano bene insieme! Per prima cosa crea un template di nova page e aggiungi un flexible content ai campi del template.

Come spiegato nella documentazione, puoi accedere al contenuto statico di nova-page nelle tue viste blade usando {{ Page::get('attribute') }}. Quando richiedi il contenuto flexible in questo modo, viene restituita una stringa JSON grezza che descrive il contenuto flexible, il che ovviamente non è molto utile. Invece, puoi semplicemente implementare il trait Whitecube\NovaFlexibleContent\Concerns\HasFlexible sui tuoi Template di pagina, che esporrà il metodo facade Page::flexible('attribute') e si occuperà della trasformazione del contenuto flexible.

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

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

class Home extends Template
{
    use HasFlexible;

    // ...
}

💖 Sponsorizzazioni

Se dipendi da questo pacchetto nelle tue applicazioni in produzione, prendi in considerazione l'idea di sponsorizzarci! È il modo migliore per aiutarci a continuare a fare ciò che amiamo: creare ottimo software open source.

Contributi

Sei libero di suggerire modifiche, chiedere nuove funzionalità o correggere bug da solo. Siamo sicuri che ci siano ancora molti miglioramenti possibili e saremmo felicissimi di integrare pull request utili.

Grazie!

Test unitari

Quando aggiungi una nuova funzionalità o correggi un bug, aggiungi i corrispondenti test unitari. La suite di test attuale è limitata, ma ogni test unitario aggiunto migliorerà la qualità del pacchetto.

Esegui PHPUnit chiamando composer test.

Fatto con ❤️ per l'open source

Da Whitecube usiamo un sacco di software open source come parte del nostro lavoro quotidiano. Quindi, quando abbiamo l'opportunità di restituire qualcosa, siamo super entusiasti!

Speriamo che apprezzerai questo piccolo contributo da parte nostra e ci farebbe piacere sentirti se lo trovi utile nei tuoi progetti. Seguici su Twitter per ulteriori aggiornamenti!

Scarica lo strumento