2015-08-19 17 views
9

Mam formularze, które przesyłają wielowymiarowe tablice. Podoba mi się:Laravel 5: Żądaj sprawdzania wielowymiarowej tablicy

slide[1][title] 
slide[2][title] 

Teraz używam klasy Żądanie do definiowania moich reguł. Jak mogę przechodzić przez wszystkie elementy tablicy w obrębie tej klasy. Próbowałem:

public function rules() 
{ 
    return [ 
     'id' => 'required', 
     'slide' => 'array|min:1', 
     'slide.*.title' => 'required|max:255', 
     'slide.*.description' => 'required|max:255', 
    ]; 
} 

Ale to nie zadziałało.

+1

Należy pamiętać, że [można odpowiedzieć na własne pytanie] (http://stackoverflow.com/help/self-answer). Nie publikuj rozwiązania w swoim pytaniu. – totymedli

Odpowiedz

6

Zastrzeżenie: Roztwór ten został opublikowany w pytaniu przez Alexej. Ponieważ odpowiedzi nie powinny być udostępniane w treści pytania, a OP wydaje się być nieaktywny, odświeżam jego odpowiedź jako wiki społeczności dla przyszłych czytelników:

Znalazłem rozwiązanie, pobierając tablicę slajdów i pętlę przez to.

public function rules() 
{ 
    $rules = [ 
     'id' => 'required', 
     'slide' => 'array|min:1', 
    ]; 
    foreach($this->request->get('slide') as $key => $val){ 
     $rules['slide.'.$key.'.title'] = 'required|max:255'; 
     $rules['slide.'.$key.'.description'] = 'required|max:255'; 
    } 
    return $rules; 
} 
0

Nie ma wstępnie skonfigurowanej zasady sprawdzania poprawności wielowymiarowych macierzy. Najprostszym sposobem jest sprawdzenie poprawności tablicy wewnątrz kontrolera.

Problem polega na tym, że do przechowywania pojedynczych wartości używa się tablicy wielowymiarowej, a logika jest błędna, a to, co należy naprawić, to logika, a nie framework.

Na przykład widziałem dużo czasu wysyłania poświadczeń użytkownika, takich jak $ var ['login'] ['pass'] i $ var ['login'] ['username'], które można łatwo przetłumaczyć na 2 różne zmienne, które miałyby większy sens.

Jeśli wiesz, jakie powinny być te wartości i masz pewność, że walidacja może być czymś ogólnym dla wszystkich różnych wartości, możesz utworzyć niestandardowy weryfikator (przeczytaj dokumentację sprawdzania poprawności swojej wersji w wersji laravel).

Odnosząc się do twojego kodu, myślę, że tablica wielowymiarowa jest deklarowana w ten sam sposób, co w twoim html slide[]['title']. Dobrze będzie wiedzieć, w jaki sposób wysyłasz te parametry do zaplecza, aby móc podać wskazówki dotyczące konfiguracji sprawdzania poprawności.

Powiązane problemy