PHP code example of laravelguru / laravel-filehandler
1. Go to this page and download the library: Download laravelguru/laravel-filehandler library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
laravelguru / laravel-filehandler example snippets
$data = $request->validate([
"cv_path" => ["nullable", "integer", "exists:files,id"],
"brochures" => ["nullable", "array", "max:5"],
"brochures.*" => ["nullable", "integer", "exists:files,id"],
])
public function up(): void
{
Schema::create('courses', function (Blueprint $table) {
$table->string('brochures')->nullable();
});
}
public function create()
{
$faculties = Faculty::query()->orderBy('name', 'asc')->get();
$documents = File::query()->where('user_id', auth()->id())->where('folder', 'documents')->paginate(9)->onEachSide(1);
return Inertia::render('Courses/Create', [
'documents' => FileResource::collection($documents),
'faculties' => FacultyResource::collection($faculties),
]);
}
public function store(StoreCourseRequest $request)
{
$data = $request->validated();
if (isset($data['brochures'])) {
$data['brochures'] = json_encode($data['brochures'], true);
}
$data['created_by'] = auth()->id();
$data['updated_by'] = auth()->id();
if (Gate::allows('create_course')) {
Course::create($data);
return redirect()->route('courses.index')->with('success', 'Course created successfully');
} else {
return redirect()->back()->with('error', 'You are not authorized to create a course');
}
}
public function edit(Course $course)
{
if (Gate::allows('update_course', $course)) {
$faculties = Faculty::query()->orderBy('name', 'asc')->get();
$documents = File::query()->where('user_id', auth()->id())->where('folder', 'documents')->paginate(9)->onEachSide(1);
$array = json_decode($course->brochures) ?? [];
$brochures = File::whereIn('id', $array)->get();
return Inertia::render('Courses/Edit', [
'course' => new CourseResource($course),
'brochures' => FileResource::collection($brochures),
'documents' => FileResource::collection($documents),
'faculties' => FacultyResource::collection($faculties),
]);
} else {
return redirect()->back()->with('error', 'You are not authorized to edit this course');
}
}
public function update(UpdateCourseRequest $request, Course $course)
{
//
$data = $request->validated();
if (isset($data['brochures'])) {
$data['brochures'] = json_encode($data['brochures'], true);
}
$data['updated_by'] = auth()->id();
if (Gate::allows('update_course', $course)) {
$course->update($data);
return redirect()->route('courses.index')->with('success', 'Course updated successfully');
} else {
return redirect()->back()->with('error', 'You are not authorized to update this course');
}
}
$data = $request->validate([
"cv_path" => ["nullable", "integer", "exists:files,id"],
])
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->string('cv_path')->nullable();
});
}
public function edit(User $user)
{
$documents = File::query()->where('user_id', auth()->id())->where('folder', 'documents')->paginate(9)->onEachSide(1);
$cv_array = [json_decode($user->cv_path)] ?? [];
$cv_path = [];
if (is_array($cv_array) && count($cv_array) > 0) {
$cv_path = File::whereIn('id', $cv_array)->get();
}
return Inertia::render('User/Edit', [
'user' => new UserResource($user),
'cv_path' => FileResource::collection($cv_path),
'documents' => FileResource::collection($documents),
]);
}
public function show(Course $course)
{
$modules = $course->modules()->orderBy('created_at', 'asc')
->paginate(10)
->onEachSide(1);
$array = json_decode($course->brochures) ?? [];
$brochures = File::whereIn('id', $array)->get();
return Inertia::render('Courses/Show', [
'course' => new CourseResource($course->loadCount('modules')),
'brochures' => FileResource::collection($brochures),
'modules' => ModuleResource::collection($modules),
]);
}
$data = $request->validate([
"image" => ["nullable", "string"],
])
public function up(): void
{
Schema::create('courses', function (Blueprint $table) {
$table->string('image')->nullable();
});
}
bash
return [
// Other Service Providers
LaravelGuru\LaravelFilehandler\ServiceProvider::class,
];
bash
php artisan serve
npm run dev
bash
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider"
or
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider" --tag=filehandler-config
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider" --tag=filehandler-migration
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider" --tag=filehandler-controller
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider" --tag=filehandler-resource
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider" --tag=filehandler-model
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider" --tag=filehandler-components
php artisan vendor:publish --provider="LaravelGuru\LaravelFilehandler\LaravelFilehandlerServiceProvider" --tag=filehandler-css
bash
php artisan storage:link
bash
php artisan migrate
bash
public function __construct(FileService $fileService)
bash
private function upload($user_id, $files)
bash
public function show(File $file)
bash
public function update(Request $request, File $file)
bash
public function destroy(File $file)
JSX
export default function EditStaff({ auth, user, cv_path, documents }) {
const { data, setData, put, processing, errors, reset } = useForm({
cv_path: null
});
const [cvFile, setCvFile] = useState(cv_path.data ?? []);
return (
<div className="grid gap-2">
<Label htmlFor="cv_path">Upload CV</Label>
<div className="w-full overflow-x-auto">
<FileInput
selectedFiles={cvFile}
onFileChange={(files) => {
setCvFile(files);
setData("cv_path", files?.[0]?.id);
}}
apiUrl={route("files.store")}
multiple={false}
documents={documents}
/>
</div>
</div>
)
}