---
title: "Inštalácia — Tickets for Laravel | Roundly"
description: "Inštalácia cez Composer, tickets:install a migrácia, zladenie typov kľúčov, používateľ ako riešiteľ, definícia oprávnení a naplánovanie kontrol."
url: https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel/instalacia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Tickets for Laravel](https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel.md)

# Inštalácia

Pridajte balík, spustite jeho inštalátor a potom migráciu. Service provider aj globálny alias fasády Tickets sa zaregistrujú automaticky, spolu s providermi balíkov Roundly, na ktorých stojí:

```bash
composer require roundly-consulting/tickets-for-laravel
php artisan tickets:install
php artisan migrate
```

tickets:install publikuje tickets-config, potom migrácie všetkých balíkov, na ktorých tickets stojí (media-, likes-, reports-, approvals-, comments-, lifecycle- a attributes-migrations), a nakoniec tickets-migrations. Migrácie každého balíka si zachovajú vlastné poradie a žiadna neodkazuje na tabuľky iného balíka. Opakované spustenie je bezpečné: publikovaný súbor zostane, pokiaľ nezadáte --force, a znova publikovaná migrácia skončí v tom istom súbore ako predtým. Potom vypíše typy kľúčov inštalácie a ďalšie kroky.

## 1\. Pred migráciou zlaďte typy kľúčov

Migrácie podľa typov kľúčov vyberajú typy stĺpcov. Pri bigint id používateľov vyhovujú predvolené hodnoty. Pri kľúčoch UUID alebo ULID ich nastavte ešte pred php artisan migrate:

```bash
TICKETS_PRIMARY_KEY_TYPE=uuid   # tickets and guests (= lifecycle, attributes, comments key types)
TICKETS_KEY_TYPE=uuid           # requester, assignee, project, watcher, actor morphs (= your users)
LIFECYCLE_KEY_TYPE=uuid
LIFECYCLE_ACTOR_KEY_TYPE=uuid
COMMENTS_KEY_TYPE=uuid
ATTRIBUTES_KEY_TYPE=uuid
```

comments.key\_type určuje kľúč autora komentára (používateľa) aj komentovaného modelu (tiketu), takže celá inštalácia beží na jednom type kľúča — zmiešané typy nie sú podporované a tickets:doctor nahlási každý nesúlad (pozrite Modely, kľúče a čísla tiketov).

## 2\. Z modelu používateľa urobte riešiteľa

Tikety preberajú agenti a tiket môže držať len model, ktorý implementuje Contracts\\Assignee: claim(), assign() aj riešiteľ zadaný pri založení vyhodia pre čokoľvek iné InvalidAssigneeException (predvolený riešiteľ kategórie, ktorý ním nie je, sa preskočí). Pridajte kontrakt a jeho predvolenú implementáciu:

```php
use RoundlyConsulting\Tickets\Concerns\IsTicketAssignee;
use RoundlyConsulting\Tickets\Contracts\Assignee;

class User extends Authenticatable implements Assignee
{
    use IsTicketAssignee;
}
```

IsTicketAssignee pomenuje riešiteľa podľa atribútu name, notifikuje priamo používateľa a za vhodného riešiteľa tiketu ho považuje vtedy, keď je pre tiket agentom (oprávnenie agenta zúžené rozsahom agentov). Ak chcete správanie zmeniť, prepíšte ktorúkoľvek z troch metód — ticketAssigneeName(), ticketNotifiables(), isEligibleTicketAssignee().

## 3\. Definujte oprávnenia

Balík sa pýta Gate, sám však žiadne oprávnenie nedefinuje a nedefinované oprávnenie zamieta:

```php
// AppServiceProvider::boot()
use Illuminate\Support\Facades\Gate;

Gate::define('tickets.agent', fn ($user) => $user->is_support);      // who is an agent (also merge by default)
Gate::define('tickets.assign', fn ($user) => $user->is_team_lead);   // assign tickets to others
Gate::define('tickets.manage', fn ($user) => $user->is_admin);       // delete/restore tickets, run categories, fields, tags
```

is\_support, is\_team\_lead a is\_admin zastupujú vaše vlastné príznaky — stĺpec alebo kontrolu roly; štandardná tabuľka users nemá ani jeden. Funguje aj balík oprávnení, ktorý ich udeľuje cez Gate::before (napríklad permissions-for-laravel), a názvy oprávnení sa dajú nastaviť v tickets.authorization.abilities.\*.

## 4\. Naplánujte kontroly

```php
// routes/console.php
use Illuminate\Support\Facades\Schedule;

Schedule::command('tickets:sweep')->everyFiveMinutes();  // overdue and due-soon flags
Schedule::command('lifecycle:sweep')->everyMinute();     // closes resolved tickets after 7 days
```

Do plánovača sa za vás nič nezaregistruje. Bez tickets:sweep sa žiadny tiket nikdy neoznačí ako po termíne; bez lifecycle:sweep sa vyriešené tikety nikdy samy neuzavrú.

## 5\. Skontrolujte inštaláciu

```bash
php artisan tickets:doctor
```

Čerstvá inštalácia končí s kódom 1, kým ju nenastavíte: notifikácie pre hostí sú predvolene zapnuté a predvolený generátor odkazov pre hostí potrebuje routy pre hostí, ktoré sú predvolene vypnuté. Vyriešite to jedným z troch spôsobov — sprístupníte API s prístupom pre hostí, naviažete vlastný Contracts\\GuestLinkGenerator (samostatný frontend, pozrite Hostia a odkazy pre hostí) alebo vypnete e-maily hosťom:

```bash
# Serve the API with guest access (guests are on by default)
TICKETS_ROUTES=on

# …or stop guest mail
TICKETS_NOTIFY_GUESTS=off
```

## Voliteľné kroky

| Chcete | Urobte |
| --- | --- |
| JSON API | TICKETS\_ROUTES=on; so Sanctum publikujte konfiguráciu a v tickets.routes.middleware použite auth:sanctum (pozrite JSON API). |
| Zmeniť routu | php artisan vendor:publish --tag=tickets-routes — publikovaný routes/tickets.php natrvalo nahradí routy balíka. |
| Zmeniť text | php artisan vendor:publish --tag=tickets-translations (dodávajú sa en a sk). |
| Validačné hlásenia v inom jazyku | Tickets pomenúva vstupy sám (tickets::validation.attributes, guest\_fields; dodávajú sa en a sk); vety hlásení Laravelu pochádzajú z vášho lang/<locale>/validation.php — Laravel dodáva len angličtinu, preto pridajte napríklad lang/sk/validation.php (php artisan lang:publish vám dá anglickú verziu na preklad). |
| Notifikácie pre zmienky | Nastavte comments.mention\_resolver (comments-for-laravel). |
| Notifikácie v databáze | Tabuľka notifications vo vašej aplikácii a database v tickets.notifications.channels. |
| Tímy ako riešitelia | Model tímu, ktorý implementuje Contracts\\Assignee (funguje aj teams-for-laravel). |

## Publish tagy

| Tag | Publikuje |
| --- | --- |
| `tickets-config` | `config/tickets.php` |
| `tickets-migrations` | desať migrácií s časovou pečiatkou z publikovania |
| `tickets-translations` | `lang/vendor/tickets/{en,sk}/{enums,messages,notifications,validation}.php` |
| `tickets-routes` | `routes/tickets.php` |

```bash
php artisan vendor:publish --tag=tickets-config
php artisan vendor:publish --tag=tickets-migrations
php artisan vendor:publish --tag=tickets-translations
php artisan vendor:publish --tag=tickets-routes
```

Migrácie sa len publikujú: provider žiadnu nenačíta, takže php artisan migrate spustí presne tie súbory, ktoré ste publikovali. Publikovaný routes/tickets.php natrvalo nahradí routy balíka, preto ho inštalátor nikdy nepublikuje.

## Preklady

Každý text pre používateľov ide cez menný priestor tickets::, v angličtine (en) a slovenčine (sk) s rovnakými kľúčmi: enums.php (jedna mapa popisov na enum), messages.php (texty výnimiek a príkazov), notifications.php (e-maily) a validation.php (zobrazovaný názov každého vstupu API plus guest\_fields). Ak chcete zmeniť riadok, publikujte ich cez --tag=tickets-translations, pre ďalší jazyk pridajte lang/vendor/tickets/<locale>/… — chýbajúci kľúč použije záložný jazyk Laravelu. Hlásenia výnimiek, doctor, inštalátor, popisy enumov aj e-maily sa riadia aktuálnym jazykom (pri e-maile preferredLocale() príjemcu).

## php artisan about

Sekcia Tickets ukazuje typ primárneho kľúča, typ kľúča, triedu životného cyklu, enum priorít, prefix čísel, či sú zapnuté aktivity, routy a prístup pre hostí, dĺžku do automatického uzavretia a notifikácie s ich kanálmi. Chybné nastavenie sa zobrazí ako INVALID namiesto zlyhania príkazu a nikdy sa nezobrazia údaje hostí ani tajomstvá.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel.md)
