• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laravel - przekierowanie po dodaniu walidacji

Aruba Cloud - Virtual Private Server VPS
0 głosów
455 wizyt
pytanie zadane 2 lutego 2021 w PHP przez mi-20 Stary wyjadacz (13,250 p.)

Cześć,

mam taki kod

kontroler

public function create(TeacherRequest $request)
    {
        if ($request->isMethod('POST')) {
            $this->teacherService->save($request->all());

            return redirect()->route('admin.teachers.index');
        }

        return view('pages.admin.teachers.form', [
            'item' => new User(),
            'title' => 'Dodaj nauczyciela'
        ]);
    }

trasa

Route::match(['post', 'get'], 'create', 'TeacherController@create')
            ->name('admin.teachers.create');

kiedy próbuję przejść do strony dodawania "/create" zostaję automatycznie przeniesiony do strony "/index" problem występuje tylko wtedy kiedy dodam walidację w TeacherRequest

 

O co może chodzić? Pierwszy raz spotykam się z czymś takim

komentarz 2 lutego 2021 przez niezalogowany
Z tego co przejrzałem to każdy piszę 'post' a nie 'POST' ale nie jestem pewien czy to może mieć znaczenie. Co masz w TeacherRequest? Możliwe że wykonuje się walidacja która przekierowuje do poprzednio odwiedzanej strony.
komentarz 2 lutego 2021 przez mi-20 Stary wyjadacz (13,250 p.)

TeacherRequest - standardowa walidacja. To raczej nie chodzi o to czy POST czy post bo problem pojawia się dopiero po dodaniu reguł, jak w przykładzie required

<?php

namespace App\Http\Requests\Teachers;

use Illuminate\Foundation\Http\FormRequest;

class TeacherRequest extends FormRequest
{
    /**
     * @return bool
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * @return array
     */
    public function rules(): array
    {
        return [
            'name' => 'required'
        ];
    }
}

 

komentarz 2 lutego 2021 przez niezalogowany

Czy w TeacherRequest->rules nie powinno też być sprawdzania metody żeby dla get nie sprawdzać formularza?

komentarz 2 lutego 2021 przez CubeStorm Pasjonat (15,020 p.)
Nie, ta akcja służy tylko to tworzenia reguł walidacji.

2 odpowiedzi

0 głosów
odpowiedź 2 lutego 2021 przez niezalogowany
wybrane 4 lutego 2021 przez mi-20
 
Najlepsza

Jeżeli dobrze odtworzyłem to co chciałeś osiągnąć to u mnie działa taki kod. W klasie TeacherRequest wykonywała się walidacja która przekierowywała do poprzedniej strony. (laravel 8)

    public function rules()
    {
        $rules = [];
        if ($this->isMethod('post')) {
            $rules = [
                'name' => 'required'
            ];
        }
        return $rules;
    }

 

komentarz 4 lutego 2021 przez mi-20 Stary wyjadacz (13,250 p.)
O to chodziło, dziwne bo w poprzednich wersjach nie miałem takich problemów
0 głosów
odpowiedź 2 lutego 2021 przez CubeStorm Pasjonat (15,020 p.)

Do tych "zwalidowanych" danych z obiektu TeacherRequest powinieneś się odnieść za pomocą $request->validated(), a nie $request->all().

 

Spróbuj po prostu dodać dd($request), na samej górze akcji kontrolera. Na samym dole powinieneś dostać informacje czy wchodzisz post'em czy get'em.

komentarz 2 lutego 2021 przez mi-20 Stary wyjadacz (13,250 p.)
Problem polega na tym, że kiedy dodam reguły walidacji, i na początku metody create dam dd() to i tak metoda jest omijana i po prostu strona się odświeża, całość się naprawia po usunięciu reguł
komentarz 2 lutego 2021 przez CubeStorm Pasjonat (15,020 p.)
Czyli przechodząc ze strony index do create zostajesz cofnięty na stronę index (dobrze zrozumiałem?). Czyli po prostu walidacja zadziałała, zwalidowała dane i zwróciła błąd bo dane nie spełniły reguł walidacji. Stwórz na stronie index kod, który wyświetli komunikaty błędów.
komentarz 2 lutego 2021 przez mi-20 Stary wyjadacz (13,250 p.)
ale walidacja nie mogła zadziałać, ja dopiero chcę wyświetlić stronę z formularzem
komentarz 2 lutego 2021 przez CubeStorm Pasjonat (15,020 p.)
Hmm, pierwszy raz spotykam się z taką sytuacją. A może stwórz middleware, który wykona sprawdzenie: jeśli metodą jest get to przeniesie na dany widok.

 

Ewentualnie może wchodząc na create już przesyłasz tam jakiekolwiek dane postem?

Podobne pytania

0 głosów
0 odpowiedzi 260 wizyt
pytanie zadane 23 sierpnia 2021 w PHP przez Uwegi Początkujący (430 p.)
0 głosów
0 odpowiedzi 119 wizyt
pytanie zadane 11 lipca 2018 w PHP przez Gambr Dyskutant (7,530 p.)

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,654 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...