我的表单中有一个地址字段,通过使用给定的地址,我获取该字段的lat & long
并将其保存到DB中。。
如果用户输入的地址错误,则lat & long
将为空。。
因此,在这里我需要为该字段添加一个新的验证器规则。。
这是我的代码,
我试过这样的东西。。但是不知道怎么做。。
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()) {
..
}
}
我该怎么做。。。有人能帮我吗
谢谢你,
您需要创建请求验证类新表单request。
- 创建新的请求类
App/Requests/MapRequest.php
和
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'
];
}
}
在控制器方法中使用Map Request类:例如,MapController:
public function store(MapRequest $request) { // process your logic to here! }