2016-08-08 28 views
0

Ich habe ein Adressfeld in meiner Form setzen, unter Verwendung der Adresse mich, dass lat & long dafür holen gegeben und in DB speichern ..Wie benutzerdefinierte Validierungsregeln und Fehlermeldung in Laravel 5

Wenn die Benutzer geben die falsche Adresse der lat & long null ..

Also hier würde ich brauche eine neue Prüfregeln für das Feld hinzufügen ..

hier ist mein Code,

ich habe versucht, so etwas wie dieses .. Aber ich weiß nicht, wie ich das machen soll.

public function getLatlan($address = '') 
{ 
    $formattedAddr = str_replace(' ','+',$address); 
    $geocodeFromAddr = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.$formattedAddr.'&sensor=false'); 
    $output = json_decode($geocodeFromAddr); 
    $data['latitude'] = $output->results[0]->geometry->location->lat; 
    $data['longitude'] = $output->results[0]->geometry->location->lng; 
    return $data; 
} 

function postSave(Request $request) 
{ 

    $rules = $this->validateForm(); 
    $address_validate = array('location'  =>'enter valid address'); 

    if($_REQUEST['location'] != ''){ 
     $data = $this->getLatlan($_REQUEST['location']); 
    } 
    if($data['latitude'] == '' || $data['longitude'] == ''){ 
     array_merge($rules,$address_validate); 
    } 
    $validator = Validator::make($request->all(), $rules); 
    if ($validator->passes()) { 
     .. 
    } 
} 

Wie sollte ich das tun ... Könnte mir jemand helfen ..

Danke,

+0

Haben Sie das gelesen https://laravel.com/docs/5.2/validation#custom-validation-rules – TheFallen

+0

Ja ich habe it..But weiß nicht, wie diese .. –

+0

in meinem Fall zu implementieren Warum nicht? Sie müssen nur Ihre Lat- und Long-Validierung in eine benutzerdefinierte Regel extrahieren. Ich denke, die Dokumentation ist sehr gut und verständlich. – TheFallen

Antwort

3

Sie benötigen haben Anforderungsüberprüfung Klasse neue Formular-Anfrage zu erstellen.

  1. Create New Anfrage Klasse

App/Requests/MapRequest.php
und

namespace App\Http\Requests; 
use App\Http\Requests\Request; 
class MapRequest extends Request 
{ 
    public function rules() 
    { 
     return [ 
      'lat' => 'required|min:2', 
      'long' => 'required', 
     ]; 
    } 
    public function messages() 
    { 
     return [ 
      'lat.required' => 'Required Message', 
      'lat.min' => 'Minimum value message', 
      'long.required' => 'Required Message' 
     ]; 
    } 
} 
  1. Use Map anfordern Klasse in Ihrem Controller-Methode: zum Beispiel MapController :

    public function store(MapRequest $request) 
    { 
        // process your logic to here! 
    }