Die Frage war: Wie gestaltet ih den checkout Prozess? Aber das hat sich nun erledigt das ivh selber einen weg gefunden habe.
User Credits ist eine virtuelle Währung sie sich der user durch Aktivität oder events verdienen kann.
Die Frage war: Wie gestaltet ih den checkout Prozess? Aber das hat sich nun erledigt das ivh selber einen weg gefunden habe.
User Credits ist eine virtuelle Währung sie sich der user durch Aktivität oder events verdienen kann.
Hi,
leider alles lokal.
Ich bin jetzt weit zurückgerudert und das ist jetzt der aktuelle Stand:
User nimmt waren -> warenkorb -> checkout -> daten checken .. waren übersicht anzeigen .. und dann bestellung platzieren ..
Was mir aber jetzt wieder fehlt ist die sache mit dem payment .. sprich diese geschichte mit den User credits .. wie am besten implementieren?
Sprich user geht in den checkout, füllt alles aus wenn nötig, select mit payment Methoden, je nach Art der Bezahlung vor dem submit der bestellen prüfen ob user credits oder Bank transfer gewählt wurde:
User credits
Checken ob genug credits, Abzug der credits -> confirm success
Wenn zu wenig credits dann kommt ne message und er bleibt auf der Seite und muss was anderes zur Bezahlung wählen.
Bank transfer:
Direkt confirm success mit bankdaten und Details zur order.
Was ich mir aber auch schon gedacht habe .. die user haben ja ein eigenes panel .. sollte sie nachdem sie die bestellung gemacht haben dorthin gehen und quasi das bezahlen hier erledigen? ...
PS: Die Handynummer gibts nicht mehr
Moin meine liebstes Forum,
(ich finde ein stumpfes Hi zu langweilig.)
Ich Sitze ja aktuell an dem ecommerce Part meines CMS'es (sagt man das so?) und habe Probleme dabei eine richtige Struktur bzw den richtigen Weg zu finden.
Bisher habe ich:
Warenkorb
Der Nutzer / Gast kann Produkte einlegen und auch die Mengen ändern, Produkte aus dem Korb löschen. Ich habe den Warenkorb als Component in die Navigation gepackt. Aktuell gibt es keine eigene Übersicht, der Benutzer kann im Checkout sehen was er eingepackt hat. Es können generell Gäste sowohl als auch User Produkte in den Warenkorb legen einzigster Unterschied das der Gast im Warenkorb Components einen Hinweis hat das er sich einloggen/registrieren muss für den Checkout.
Ist das so gut oder sollte ich eher nur angemeldeten Usern erlauben den Warenkorb zu nutzen? Problematisch ist bisher nur die Übergabe des Korbes vom Gast zum User.
Checkout:
Ein simples Step Form mit einzelnen schritten, ebenfalls ein Livewire component.
Der erste Step ist die Übersicht des Warenkorb.
Der zweite Step ist der Abgleich der Userdaten wie Adresse Name und Telefonnummer, E-Mail.
Der 3te Step ist die Wahl der Payment Methode und ab da hackt es: Der Nutzer kann aktuell zwischen Credits (Testphase) und einer einfachen Bankünerweisung wählen.
Wenn Banküberweisung gewählt kann der Nutzer direkt zur Bestätigung. Wenn er credits wählt muss ich dann direkt prüfen ob er genug hat .. Wenn nicht gehts nicht weiter bzw er muss eine andere payment Methode wählen. Sollte der user genug credits haben werden die credits abgezogen und er kann weiter zu Konfirmation. Bei der erfolgreichen Zahlung der Bestellung ändeet sich der status der order zu success.
Wie müsste das ganze mit zB PayPal aussehen? Ich denke Anfrage schicken -> success -> confirmation oder eben -> fail und back zu step 3 eine andere Methode wählen?
Der 4te step ist Quasi die Bestätigung und der Überblick über alle gekauften Produkte und die komplette Summe plus gewählte payment Methode. Bei der Methode banküberweisung sollten die bankdaten von mir kommen.
Macht das Sinn? Habt ihr Verbesserungen? Ich habe Angst das ich was vergesse.
Wenn ein echter Browser zur Verfügung steht.... Wieso nicht einfach Repo in GitHub öffnen, und . drücken?
Den Trick kennt vlt hier niemand aber bisher
LOL! Kannte ich tatsächlich noch nicht!
Also ich selber nutze auch oft das Handy und habe bisher leider nichts gutes finden können.
Es gibt:
https://apps.apple.com/us/app/runesto…or/id1548193893 -> ist ganz ok und reicht für das meiste eigentlich aus!
https://apps.apple.com/us/app/koder-code-editor/id1447489375 -> eher darauf ausgelegt wenn du zb files auf dem Handy hast also local arbeitest. Dabei spielt es keine Rolle ob du das per webdav oder ftp oder sonstwas holst .. -> ok!
https://apps.apple.com/us/app/code-ed…de/id1581290510 -> schrott!
https://apps.apple.com/us/app/visual-code/id6444809156 -> ok!
Ich persönlich nutze
und bis auf das Optische .. (manchmal ist einfach chaos) funzt das erstaunlich gut. Finde für das arbeiten an REPOS bisher das beste.
Aber ganz ehrlich: Nichts ersetzt die IDE am PC .. schnapp dir ein Netbook .. das ja ganz klein und zauber dir ein schönes Linux drauf und VSCODE oder Intelij
Thema Web IDE kenne ich nur VScode Server -> hier mal nen VIdeo von nem coolen dude der das ganz gut erklärt und zeigt:
eventuell wäre das noch was: https://github.com/features/codespaces
ok. Naja besser machen was schon gut ist war nie eine gute Idee.
Laravel 12 jetzt anpassen möchte und auch TailwindCSS 4.
Gibts gravierende Änderungen?
Hat schon mal jemand spaßeshalber neun shop programmiert? Was für Funktionen sollte / muss es geben?
Also noch nicht aber würde gerne die Discord Bots damit laufen lassen und hoffentlich kriege ich das so eingestellt, dass wenn ich in github eine Änderung pushe der Bot mit dem neuen Code sich neustartet mal sehen
Also wenn das nicht geht fress ich nen besen
Also heute is porno. Sitze grad mit Kaffee und kippe auf dem Balkon. Wind könnte wärmer sein ABER die Sonne ist gut
Okay ich verstehe. Eine wichtige Frage habe ich aber noch: Hast du generell deine Models so aufgebaut das du Downloads anbieten könntest? Sprich: Der Image Upload .. -> file Model hast du da für Images eine Tabelle und zb eine für Files wie pdfs?
Nachtrag:
<?php
namespace App\Filament\Resources\Traits;
use Filament\Forms\Components\FileUpload;
use Illuminate\Support\Facades\Storage;
trait HasImages
{
public function getFolderUrlAttribute(): string
{
return $this->files()->exists()
? Storage::url('public/files/folder/' . $this->files()->first()->filename . '.webp')
: $this->defaultImage();
}
public function getPreviewUrlAttribute(): string
{
return $this->files()->exists()
? Storage::url('public/files/large/' . $this->files()->first()->filename . '.webp')
: $this->defaultImage();
}
public function getImageUrlAttribute(): string
{
return $this->files()->exists()
? Storage::url('public/files/show/' . $this->files()->first()->filename . '.webp')
: $this->defaultImage();
}
public function getImageContactAttribute(): string
{
return $this->files()->exists()
? Storage::url('public/files/contact/' . $this->files()->first()->filename . '.webp')
: $this->defaultImage();
}
protected function defaultImage(): string
{
return Storage::disk('public')->url('default.webp');
}
public static function formImagesField(): FileUpload
{
return
FileUpload::make('images')
->label('Upload Images')
->helperText('Upload multiple images')
->multiple()
->disk('public')
->directory(fn(\Filament\Forms\Get $get, $record) => strtolower(class_basename($record)) . '/' . $get('id') . '/images/')
//->acceptedFileTypes(['image/*'])
//->maxSize(10240)
->storeFilenamesIn('original_name')
->visibility('public')
->previewable(false)
->reactive()
->columnSpan('full')
->saveRelationshipsUsing(function ($component, $state, $record) {
foreach ($state as $filePath) {
$record->files()->create([
'path' => $filePath,
'model' => get_class($record),
'original_name' => 'aasd',
]);
}
});
}
}
Alles anzeigen
Bin total lost: Als Fehler bekomme ich beim Uploaden:
SQLSTATE[HY000]: General error: 1 table files has no column named article_id (Connection: sqlite, SQL: insert into "files" ("path", "article_id", "updated_at", "created_at") values (article/1/images//01JPJVHQYRYPKFP8S40VYJ5D1N.jpg, 1, 2025-03-17 21:08:31, 2025-03-17 21:08:31))
Wobei ich nicht will das da article_id steht oder geht das nicht anderster?
Was ich meinte in dem Trait finde ich nur das der filename und Endung gespeichert werden. Wo deklarierst du den Rest oder bin ich einfach grad nur blind?
Macht es Sinn in den Trait upload Funktion zu bauen die ich quasi nutze um images hoch zuladen?
Dateiname, Original Dateiname (falls man das möchte), Dateiendung, Größe, Model, Model ID.
Okay kann deinen Trait soweit nachvollziehen. Was ich nicht finde ist wo du die besagten Meta Daten Speicherstadt bzw. wie? Ich schätze das Model heißt File?
Und als relation files() quasi
Auch lustig: Loren Ipsum auf Bayrische Art
Bavaria ipsum dolor sit amet mehra Landla Kneedl Zidern baddscher du dadst ma scho daugn Gamsbart weida ned back mas? Oans griasd eich midnand dringma aweng, Zwedschgndadschi Weiznglasl. Wia Milli sog i ded da, hog di hi wea nia ausgähd, kummt nia hoam samma, Vergeltsgott ded! Oba nia i mog di fei wos Sepp Haberertanz dahoam mechad Wurschtsolod ebba. Mim Bradwurschtsemmal nimma Trachtnhuat sodala Sepp, so Brezn ognudelt Engelgwand. Woibbadinga resch kimmt Enzian de Sonn wolln mei scheans oans gwiss? Jodler bitt oans, zwoa, gsuffa Prosd! Lewakaas hoid do spernzaln, hob i an Suri i hob di liab trihöleridi dijidiholleri nia need. Servas mehra Schdarmbeaga See Woibbadinga Bladl scheans hallelujah sog i, luja moand singan ma oamoi? Do legst di nieda naa?
Hey, ich Sitze gerade daran meine Models so auf bzw umzuschreiben das ich mehr mit Traits arbeiten kann zB HasCategories oder HasTags. In diesem Zuge macht es für mich Sinn das ganze auch mit HasImages so zu machen. Images haben zB die Produkte oder die Artikel. Von Prinzip her klappt der Upload schon allerdings wird es nicht in die Datenbank eingetragen. Die Frage die ich mir stelle:
Macht es Sinn alle hochgeladenen Bilder auch in der DB festzuhalten und welche Daten sollten das genau sein?
Ich hoffe jemand (lach) kann mir eventuell sein HasImages Trait mal zeigen oder mir ein paar Tipps geben wo es genau hakt.
Liebe Grüsse und einen schönen Montag
Moin! Schön das du uns gefunden hast. Freue mich das du ein Teil der Gemeinschaft bist
Der Klassiker lorem ipsum
Safe der meist benutzeste Placeholder im WWW
Also: Filament ist drauf und ich bin mehr als nur begeistert. Egal was ich bisher wolllte hat auf Anhieb geklappt. Kein gefummel, kein gebiege. Einfach geil! Gut, okay es gibt ein paar Dinge die mir vom Aussehen her noch nicht ganz passen aber das wird!
Natürlich verwende ich livewire. Livewire ist mit der geilste ***** den es in dieser Richtung gibt. Und natürlich die v3 oder gibts / kennst du einen Grund für v2?
SAG mal hast du nicht mal drüber nachgedacht so ne tutorial Serie zu starten? Wäre mit deinem wissen ja krank.
Ja ich weiss aber nach 6 Monaten Entwicklung möchte ich ungern wieder etwas neues anfangen. Ich schaus miraber mal an weil die vergangenheit gezeigt hat wie sinnig deine Tipps sind. Danke
Ach ich seh schon in der doku das es geil ist!
Der nächste schritt wäre backpack zu clearen und Filamente zu installieren. Meine models können aber bleiben oder?