2013-09-23 11 views
8

Więc mam następujące zasady w moim modelularavel walidacji regex, łamie w świetle

public static $rules = array(
    'name'   => 'required|alpha_dash|unique:subsidiaries', 
    'internal_number' => 'required|alpha_dash|unique:subsidiaries', 
    'expedition_rate' => array('required', 'regex:/^[0-9]{1,3}(\.?)[0-9]{1,2}$/'), 
    'hundred_kg_rate' => array('regex:/^[0-9]{1,5}(\.?)[0-9]{1,2}$/'), 
    'handling'  => array('regex:/^[0-9]{1,3}(\.?)[0-9]{1,2}$/'), 
    'insurance'  => 'required|numeric', 
); 

, ale z jakiegoś powodu, gdy regex jest stosowana w tagu atrybutu pattern ... to w html przerwy!

Wynik:

<input required="true" pattern="^[0-9]{" class="form-control" ....> 
           _________ 
           \ 
            => This right here should be 
           ^[0-9]{1,3}(\.?)[0-9]{1,2}$ 
+0

Gdzie jednak wyprowadzasz? Czy używasz 'Former', przez przypadek? – rmobis

+0

@Raphael_ Właściwie używam 'Dawniej' ... reguły są przekazywane z kontrolera do widoku – Alex

+0

Wtedy jest to naprawdę problem z Byłą, nie Laravel. – rmobis

Odpowiedz

0

Spróbuj uciec nawiasy klamrowe ... Założę PHP spodziewa się analizować zmiennej wewnątrz, tak:

$var = 'something'; 
echo 'The value is {$var}.'; 
// Outputs: 
// The value is something. 

Porównajmy to z:

$var = 'something'; 
echo 'The value is \{$var\}.'; 
// Outputs: 
// The value is $var. 

Częścią, która mnie wprawia w zakłopotanie, jest to, że są one zawarte w pojedynczych cudzysłowach, a więc tak się nie stanie. Może coś z Laravel?

+0

W jaki sposób można uciec nawiasy klamrowe w składni regex? To jest dla mnie nowe – Alex

+0

Podwójne wszystkie ukośniki odwrotne. –

+0

Przepraszam, myślę, że źle zrozumiałem twoje pytanie. Aby uciec przed nawiasem klamrowym, powinieneś po prostu wykonać '\ {... \}'. Kiedy renderuje, nie powinien mieć tego ukośnika odwrotnego. –

2

Spróbuj użyć w ten sposób.

array(
    'field' => 'regex:[a-z]' 
); 

Mam nadzieję, że będzie to pomocne.