OnClick Button zeigt gesamtes Array in der Adressleiste.

  • Hallo,

    in meiner Show-Methode in meinem Controller hole ich mir alle nötigen Daten aus zwei Tabellen und übergebe das Ergebnis des Arrays an meinen Show View.

    Hier habe ich ein Formular, das alle Daten anzeigt und auch die dazugehörigen Dateien zum Herunterladen.

    Das ganze funktioniert super.

    Allerdings wird das komplette Array in der Adressleiste angezeigt. Etwa so:

    http://127.0.0.1:8000/products/1?file-dropdown=%7B%22id%22%3A1%2C%22filename%22%3A%22Bedouine.png%22%2C%22filepath%22%3A%22%5C%2Fstorage%5C%2FCompanyFiles%5C%2FBedouine.png%22%2C%22changelog%22%3A%22Company+Current+Network.png%22%2C%22changelogpath%22%3A%22%5C%2Fstorage%5C%2FCompanyFiles%5C%2F+Current+Network.png%22%2C%22version%22%3A%221.0%22%2C%22programLabel%22%3A%22Frame%22%2C%22hidden%22%3Afalse%2C%22created_at%22%3A%222021-04-23T15%3A46%3A18.000000Z%22%2C%22updated_at%22%3A%222021-04-23T15%3A46%3A18.000000Z%22%2C%22releaseDate%22%3A%222021-04-01T00%3A00%3A00.000000Z%22%2C%22pivot%22%3A%7B%22product_id%22%3A1%2C%22file_id%22%3A1%7D%7D&download-changelo=


    Das geht gar nicht, aber ich habe keinen Plan, wie ich bei OnClick vermeiden kann, dieses Array anzuzeigen.


    Gibt es keine Hidden Funktionalität?


    <div  id="download-file{{$index}}">
                                            <button class="btn btn-primary" name="download-file" onclick="window.open('{{ $files[0]->filepath }}')">
                                                <i class="fa fa-download" aria-hidden="true"></i>
                                            </button>

                                        </div>


    Hat jemand eine Idee?


    Wäre super.


    Und toll, dass es ein deutsches Laravel Forum gibt.

  • Hi,


    auf diese Weise kannst du nicht verhindern, dass die Adresse angezeigt wird, da du die URL in einem neuen Fenster per GET öffnest.


    Ich mache das normalerweise so:

    Mit dem Button ein Submit eines Formulars auslösen (<form>), dessen action die URL ist und als method POST verwenden. Die Controllermethode muss dann entsprechend den POST Parameter verwenden und die Datei zurückgeben.


    Kannst du damit etwas anfangen? :)

  • Hallöchen,


    ich bin zwar neu hier, hatte aber die selbe Thematik.


    Kannst du bitte mal ein bißchen mehr Code posten ?


    Letzten endes musst du wie schon erwähnt den Request im POST machen, nicht im GET.


    Da du aber per JavaScript eine URL aufrufst, wird das so nix, also -> wie schon erwähnt ein <form> und dann


    Code
    <form method="post" action="{{ route('DeinController.DeineAction') }}">
    @csrf
    .....inhalt
    oder :
    <input type="hidden" name="filepath" value="{{$filepath}}">