Галерия за Laravel проект

obqvi_in

Registered
Здравейте, искам да добавя галерия в моя проект на Laravel 9. Да бъде нещо от сорта на Lightgallery, но всеки линк към дадено изображение да е вързан за id или name от таблицата.
Благодаря на всички предварително!
 
Здравейте, искам да добавя галерия в моя проект на Laravel 9. Да бъде нещо от сорта на Lightgallery, но всеки линк към дадено изображение да е вързан за id или name от таблицата.
Благодаря на всички предварително!
Какъв е проблема? Не можеш да изградиш route с контролер ли?


PHP:
Route::get('/storage/{id}/{name}', [\App\Http\Controllers\ImageController::class, 'index'])
                ->name('image');

Вече в контролера просто имаш търсене и връщане на файла от storage,


PHP:
 public function image(
        Request $request,
        int  $id,
        string  $name
    ) {

    $image = Image::findOrFail($id);
    return Storage::disk('local')->download($image->path, $name);
}
 
Мога да направя пътят, но не искам това. Например от страницата на която са всички изображения. Като кликна на някой артикул(снимка) да ми се отваря в самата галерия. Това да ми бъде view-то, но от Lightgallery имам следният линк на първия елемент:https://www.lightgalleryjs.com/#lg=nature&slide=0 и т. н. А аз искам да е mysite/id/1 или нещо подобно. Според мен трябва да променя файла lightgallery.js в случая, но не знам как. А и не е задължително да е тази галерия. Може и по-проста. Да се отваря pop-up снимка, малко инфо, два бутона дясно ляво, може и плъзгане и уникален линк.
 
Мога да направя пътят, но не искам това. Например от страницата на която са всички изображения. Като кликна на някой артикул(снимка) да ми се отваря в самата галерия. Това да ми бъде view-то, но от Lightgallery имам следният линк на първия елемент:https://www.lightgalleryjs.com/#lg=nature&slide=0 и т. н. А аз искам да е mysite/id/1 или нещо подобно. Според мен трябва да променя файла lightgallery.js в случая, но не знам как. А и не е задължително да е тази галерия. Може и по-проста. Да се отваря pop-up снимка, малко инфо, два бутона дясно ляво, може и плъзгане и уникален линк.
Нищо не ти разбрах от описанието, но предполагам само че ти трябва просто при страницирането на галерията да подадеш пътя към дестинацията (image).

routes/web.php
PHP:
Route::get('/storage/{id}/{name}', [\App\Http\Controllers\ImageController::class, 'index'])
                ->name('image');

\App\Http\Controllers\ImageController::class
PHP:
 public function image(
        Request $request,
        int  $id,
        string  $name
    ) {

    $image = Image::findOrFail($id);
    return Storage::disk('local')->download($image->path, $name);
}

Листване на гарлерията:
PHP:
@foreach ($images as $image)
    <tr>
        <td>
            <a
            href="{{ route('image', ['id' => $image->id, 'name' => $image->name]) }}"
            target="_blank">{{ $image->name}}</a>
        </td>
    </tr>
@endforach
 
Не мисля, че ще намериш такава библиотека. Това, което се опитваш да постигнеш е доста специфично за твоите изисквания. В такъв случай ще се наложи сам да си напишеш такава "галерия".
 
Много ти благодаря за бързият отговор. Знам че е трудно за разбиране, защото искам да направя нещо различно и нетипично.
web.php
Код:
Route::get('/view/{id}', [ImageController::class, 'viewImage']);
ImageController
Код:
public function viewImage(int $code)
{
$images = DB::table('articles')
->where('code', $code)
->get();
    return view('/view',['images' => $images]);
}
Без значение как, но като кликна на изображение ми отваря view-то само на самия артикул. А аз искам от там да мога динамично да отварям и другите от бутоните, а не всяко едно по отделно. За да стане по ясно отвори този линк. Все едно всяка снимка е моя артикул и като го отвориш линка да е вързан с id-то му. Няма да те тормозя повече. Ако не си ме рзбрал се извинявам, че ти напълних главата с глупости :). От доста време търся решение на моя казус. Последно ако ми дадеш съвет къде и какво да търся ще съм ти много благодарен.
 
Не мисля, че ще намериш такава библиотека. Това, което се опитваш да постигнеш е доста специфично за твоите изисквания. В такъв случай ще се наложи сам да си напишеш такава "галерия".
Благодаря за съвета, може би това е решението.
 
Това което се опитваш да направиш е просто да имаш някакъв слайдър, който да ти визуализира съдържанието. Това не е сложно за постигане. Аз те разбрах, че искаш да си вадиш отделна снимка по адрес и прочие. В случая където вадиш изображенията за преглед и имаш странициране просто си сваляш някой от примерните слайдове и изграждаш изображенията според изискванията му и се радвай. Това което на теб ти е необходимо не е свързано толкова с бекенда, колкото с настройки във фронтенда.

 
Това което се опитваш да направиш е просто да имаш някакъв слайдър, който да ти визуализира съдържанието. Това не е сложно за постигане. Аз те разбрах, че искаш да си вадиш отделна снимка по адрес и прочие. В случая където вадиш изображенията за преглед и имаш странициране просто си сваляш някой от примерните слайдове и изграждаш изображенията според изискванията му и се радвай. Това което на теб ти е необходимо не е свързано толкова с бекенда, колкото с настройки във фронтенда.

Аз мога да си добавя проста слайдър галерия. Има много галерии и документация.
Слагам няколко файла js и css, div id="lightgallery" или нещо подобно, но искам като сменям снимката да се сменя и url-ла. Например от това което си ми пратил
линка не се променя а е статичен. Намерих такава, която линка е динамичен и се променя, но не взима id-то от таблицата. Взима само реда, по който са листанати. Според мен js файла, който визуализира галерията. Трябва да взима id-то, но не знам как. Не е задължително да е id може и името на снимката и за мен е по-добре и то е уникално. С някои от тези атрибути на <a data-pswp-tile-url="", data-sub-html="" или data-src="". Или други и за img.
 
Вче не разбирам какво желаеш. Първо да е през контролер и да връща изображението на динамичен линк, после пък да не го прави. Галериите работят на принципа (основно) на заредени на страницата изображения и ги сменят. Може и да се зареждат от базата с ajax. Харесваш си слайдър и го ползваш. Не схващам вече какъв ти е проблема и с какво Ларавел ти пречи да го направиш?
 
Ще се пробвам за последен път да обясня. Например имам имам 3 артикула с id-та от 1 до 3 листнати в articles.blade.php. Като отворя първият, да се зареди галерията от view файла. Като url става /view/1 и левият бутон да сочи към последният в случая 3 артикул а десният към 2-ри. Ако отворя вторият съответно с /view/2 десния да е 3-ти левият 1-ви и т.н. Без значение от количеството артикули.
 
Аз това, което разбрах е, че иска да браузва артикули във формата на carousel галерия.

Редица от изображения на различни артикули и при селектиране динамично да показва информацията на съответния артикул на мястото, където трябва да се изобрази голямата снимка? В случая ти не искаш да изобразяваш по-голяма снимка, а съответно view от бакенда с данните за съответния артикул?
 
Аз това, което разбрах е, че иска да браузва артикули във формата на carousel галерия.

Аз също предполагам, че това има предвид, ако потвърди ще бъде по-лесно да помогнем.

@obqvi_in това ли имаш предвид?

BTW би било винаго в бъдеще, ако някъде сте видяли нещо подобно просто споделете линк.
 
Да това е. С тази разлика, че в articles ще бъдат thumb снимките. А като се отвори галерията да е голяма, но това мисля, че не е проблем. Не мога да дам пример, защото не мога да намеря точно това. Ще дам подобен пример, но при него url-ла се сменя спрямо реда на снимките. Ето примера:https://demos.codexworld.com/create-dynamic-image-gallery-jquery-php-mysql/#gallery-1. Този линк взема първото изображение от списъка. Пробвах го вчера. JS кода генерира тези динамични линкове според реда и количеството. Ще кажа за пореден път, че не искам това. А да взима id или name от таблицата.

Друга идея измислих, не знам дали е удачна или логична. От списъка с всички, като се отвори дадена снимка Да се сектират пак всички, но да се показват само три с js. Избраната да е голяма а другите две да са бутоните: предишна и слвдваща. Нещо подобно на страницирането(pagenation). Благодаря още веднъж на всички!
 
Не знам, ама и мен супер много ме объркват мненията му. Уж е това, което описвам, но с добавените от него обяснения си мисля, че не е.

Надраскай нещо на Фотошоп или Paint с това как ти си представяш нещата да изглеждат. Твоето задълбаване вкарва прекалено много имплементациоен детайл, който само ти си представяш как е, а ние гадаем и в същото време искаш да ти помогнем да направиш нещо.

Вече до колкото разбирам, ти не искаш да е на SPA принцип, където имаш една статична страница, която чрез ajax ти зарежда различни вюта?
До колкото (се опитвам) разбирам ти имаш 2 вюта. Едното е articles, където имаш списък от артикули и вю, да речем article, което ти зарежда един артикул?
Когато заредиш article вюто искаш по-голямата част от екрана да показва текущия артикул като от ляво и от дясно имаш бутони да местиш към следващия/предходния артикул, както и отдолу на страницата имаш редица изображения на всичките артикули, които като селектираш да ти отварят същата страница, но със новоселектирания артикул?

Ако е така, то вюто ти просто трябва да направи базова математика. Като го отвориш, ти вече знаеш id-то на текущия артикул. От там си изчисли предходния и следващия като използваш текущото id минус 1 за предходния (ако вече не е първия) и id + 1 за следващия (ако вече не е последния).
А отдолу в списъка просто генерираш раут URL-ите с техните им ID-та, които сочат към същата страница.

Това е вариация на странициране.
 
До колкото (се опитвам) разбирам ти имаш 2 вюта. Едното е articles, където имаш списък от артикули и вю, да речем article, което ти зарежда един артикул?
Когато заредиш article вюто искаш по-голямата част от екрана да показва текущия артикул като от ляво и от дясно имаш бутони да местиш към следващия/предходния артикул, както и отдолу на страницата имаш редица изображения на всичките артикули, които като селектираш да ти отварят същата страница, но със новоселектирания артикул?

Ако е така, то вюто ти просто трябва да направи базова математика. Като го отвориш, ти вече знаеш id-то на текущия артикул. От там си изчисли предходния и следващия като използваш текущото id минус 1 за предходния (ако вече не е първия) и id + 1 за следващия (ако вече не е последния).
А отдолу в списъка просто генерираш раут URL-ите с техните им ID-та, които сочат към същата страница.
Да, това е. С тази разлика, че id-та не са поредни числа, защото съм изтривал артикули. И не е задължително отдолу да има списък, за да не усложняваме нещата допълнително.
 

Back
Горе