您好我已经尝试通过stackoverflow找到我的问题的答案,但似乎我找不到任何东西。 这是我的问题,我现在正在使用MVC框架,我需要从我的控制器的模型访问变量。这是我的模特:
<?php
use Guzzle\Http\Client;
class Position_model extends CI_Model{
public function get_location($location){
// Create a client and provide a base URL
$client = new Client('http://maps.googleapis.com/maps/api/geocode/json');
$request = $client->get('?address=' . $location . '&sensor=false');
// Send the request and get the response
$response = $request->send();
//decode json file to get the longitude and latitude
$json = json_decode($response->getBody(), true);
var_dump($json);
if($json["results"][0]["formatted_address"] AND $json["results"][0]["geometry"]["viewport"]["northeast"]){
$position["address"] = $json["results"][0]["formatted_address"];
$position["latitude"] = $json["results"][0]["geometry"]["viewport"]["northeast"]["lat"];
$position["longitude"] = $json["results"][0]["geometry"]["viewport"]["northeast"]["lng"];
return $position;
$code = 'success';
$content = 'LOCATION FOUND ... I AM AWESOME';
$this->output->set_status_header(201);
}else{
$code = 'error';
$content = 'OOPPS LOCATION NOT FOUND';
$this->output->set_status_header(400);
}
}
}
我需要从这个类中获取$ position以在名为schedule的控制器中使用,并将其附加到另一个名为$ data的变量中 我试过了:
$position = $this->Position_model->get_location($location)->position;
$data += $position;
请帮帮我!!!! 但显然,这不起作用,并给我一个错误:未定义的位置或调用非对象属性
答案 0 :(得分:5)
解决问题的简短答案:
$position = $this->Position_model->get_location($location);
$data += $position;
但您的代码中还有其他问题。你有像
这样的代码$code = 'success';
$content = 'LOCATION FOUND ... I AM AWESOME';
$this->output->set_status_header(201);
永远不会执行,因为它在return语句之后。所以程序的执行永远不会达到它。你必须把它们放在返回声明之前。
另外,我建议不要更新模型中的属性$ this-&gt;输出。我会向控制器返回一些内容,并根据返回的值设置正确的HTTP头。同时返回事物和改变对象状态可能导致不可预测的行为。
答案 1 :(得分:0)
get_location
的返回值是位置。您不需要额外的->position
您的代码应为
$position = $this->Position_model->get_location($location);
$data += $position;
错误告诉你,你正在尝试处理不像一个对象的东西。