Package with extra fields for simple-crud
This package is installable and autoloadable via Composer as simple-crud/extra-fields.
$ composer require simple-crud/extra-fields
Used to upload files into a directory and save the file name in the database. Detects instances of Psr\Http\Message\UploadedFileInterface
see here PSR-7 standard.
- First, you must define the uploads path used by the database, using the attribute
SimpleCrud::ATTR_UPLOADS
- On register the field, the
File
format will be asigned to any field named "file" or ending by "File" (for example: imageFile, avatarFile, etc) - By default, the file is saved in a subdirectory named as
[table]/[field]
. For example, the images of the fieldavatar
of the tableuser
will be saved in the folderuploads/user/avatar
. - The filename is slugified and converted to lowercase. For example, the file
My Picture.JPG
is renamed tomy-picture.jpg
.
use SimpleCrud\Fields\File;
//Register the field
File::register($simpleCrud);
//Configure the directory to upload the files
$simpleCrud->setConfig(File::CONFIG_UPLOADS_PATH, '/path/to/uploads');
//You can also configure the File field
$simpleCrud->user->file
->setConfig('directory', '/path/to/uploads') //custom directory used instead the default File::DIRECTORY
->setConfig('relative_directory', '/images') //custom subdirectory (by default is /{table_name}/{field_name})
->setConfig('save_relative_directory', true) //whether save the relative_directory in the database instead only the filename (false by default)
//Get the data from the serverRequest
$data = $request->getParsedBody();
$files = $request->getUploadedFiles();
//Create the new user
$user = $simpleCrud->user->create([
'name' => $data['name'],
'email' => $data['email'],
'file' => $files['avatar'],
]);
//Save the data
$user->save();
//Get the avatar file
echo $user->file; // /user/avatar/image.jpg;
Used to save slugified values using cocur/slugify. On register the field, the Slug
format will be asigned to any field named "slug"
use SimpleCrud\Fields\Slug;
//Register the field
Slug::register($simpleCrud);
//Create the new article
$title = 'Hello world'
$article = $simpleCrud->articles->create([
'title' => $title,
'slug' => $title,
]);
//Save the data
$article->save();
//Get the slug
echo $user->article->slug // hello-world