Set your fillables to prevent mass-assignement. This is very important, as we use request()->all()
in the module controller.
For fields that should default as null in the database when not sent by the form, use the nullable
array.
For fields that should default to false in the database when not sent by the form, use the checkboxes
array.
Depending upon the Twill features you need on your model, include the related traits and configure their respective options:
Implement the A17\Twill\Models\Behaviors\Sortable
interface and add a position field to your fillables.
Add translated fields in the translatedAttributes
array.
Twill's HasTranslation
trait is a wrapper around the popular astrotomic/laravel-translatable
package. A default configuration will be automatically published to your config
directory when you run the twill:install
command.
To setup your list of available languages for translated fields, modify the locales
array in config/translatable.php
, using ISO 639-1 two-letter languages codes as in the following example:
1<?php2 3return [4 'locales' => [5 'en',6 'fr',7 ],8 ...9];
Specify the field(s) used to create the slug in the slugAttributes
array.
Add the mediasParams
configuration array:
1<?php 2 3public $mediasParams = [ 4 'cover' => [ // role name 5 'default' => [ // crop name 6 [ 7 'name' => 'default', // ratio name, same as crop name if single 8 'ratio' => 16 / 9, // ratio as a fraction or number 9 ],10 ],11 'mobile' => [12 [13 'name' => 'landscape', // ratio name, multiple allowed14 'ratio' => 16 / 9,15 ],16 [17 'name' => 'portrait', // ratio name, multiple allowed18 'ratio' => 3 / 4,19 ],20 ],21 ],22 '...' => [ // another role23 ... // with crops24 ]25];
Add the filesParams
configuration array:
1<?php2 3public $filesParams = ['file_role', ...]; // a list of file roles
If you want you can limit the amount of revisions that are stored in the database by specifying a property on you model:
1class Author extends Model implements Sortable2{3 public int $limitRevisions = 5;4}
You can also set a global revisions limit using by setting TwillConfig::maxRevisions
Also see Migrations documentation.
If the database for you model has the fields publish_start_date
and publish_end_date
you need to make those fillable to allow content scheduling.
In addition to them being fillable you also need to add the following casts:
1public $casts = [2 'publish_start_date' => 'datetime',3 'publish_end_date' => 'datetime'4];