Php Laravel控制器在尝试获取属性时显示错误';地址';非对象
将带有以太坊地址的数组传递给控制器会显示 尝试获取非对象的属性“地址”时出错 我正在使用Laravel和区块链以太坊开发Dapp,我已经配置了自己的以太坊节点 我的BaseController带有一个公共函数,该函数调用JSONRPC到URL API,并向RegisterController返回一个地址,但它在代码行“address”=>$taddress->address中尝试获取非对象的属性“address”时出错 有人能帮我吗 我留下每个控制器的代码 BaseControllerPhp Laravel控制器在尝试获取属性时显示错误';地址';非对象,php,laravel,controller,Php,Laravel,Controller,将带有以太坊地址的数组传递给控制器会显示 尝试获取非对象的属性“地址”时出错 我正在使用Laravel和区块链以太坊开发Dapp,我已经配置了自己的以太坊节点 我的BaseController带有一个公共函数,该函数调用JSONRPC到URL API,并向RegisterController返回一个地址,但它在代码行“address”=>$taddress->address中尝试获取非对象的属性“address”时出错 有人能帮我吗 我留下每个控制器的代码 BaseController publ
public function get_address()
{
$fields = [
"jsonrpc" => '2.0',
"method" => 'eth_accounts',
// "method" => 'personal_newAccount',
// "method" => 'createAddressForToken',
"params" => ['password'],
"id" => '1',
];
$fields = json_encode($fields);
$headers = [
'Content-Type: application/json',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, APIURL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode($result);
if (isset($response->error->code)) {
return $address = 0;
} else {
return $address = $response->result;
}
}
protected function create(array $data)
{
$settings = AdminSettings::first();
// Verify Settings Admin
if ($settings->email_verification == 1) {
$confirmation_code = str_random(100);
$status = 'pending';
//send verification mail to user
$_username = $data['name'];
$_email_user = $data['email'];
$_title_site = $settings->title;
$_email_noreply = $settings->email_no_reply;
Mail::send('emails.verify', ['confirmation_code' => $confirmation_code, 'title_site' => $_title_site],
function ($message) use (
$_username,
$_email_user,
$_title_site,
$_email_noreply
) {
$message->from($_email_noreply, $_title_site);
$message->subject(trans('users.title_email_verify'));
$message->to($_email_user, $_username);
});
} else {
$confirmation_code = '';
$status = 'active';
}
$token = str_random(75);
$taddress = $this->get_address();
json_encode($taddress);
var_dump($taddress);
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'countries_id' => $data['countries_id'],
'avatar' => 'default.jpg',
'status' => $status,
'role' => 'normal',
'token' => $token,
'confirmation_code' => $confirmation_code,
'address' => $taddress->address,
//'address' => $taddress,
'private_key' => $taddress->password,
]);
}
注册表控制器
public function get_address()
{
$fields = [
"jsonrpc" => '2.0',
"method" => 'eth_accounts',
// "method" => 'personal_newAccount',
// "method" => 'createAddressForToken',
"params" => ['password'],
"id" => '1',
];
$fields = json_encode($fields);
$headers = [
'Content-Type: application/json',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, APIURL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode($result);
if (isset($response->error->code)) {
return $address = 0;
} else {
return $address = $response->result;
}
}
protected function create(array $data)
{
$settings = AdminSettings::first();
// Verify Settings Admin
if ($settings->email_verification == 1) {
$confirmation_code = str_random(100);
$status = 'pending';
//send verification mail to user
$_username = $data['name'];
$_email_user = $data['email'];
$_title_site = $settings->title;
$_email_noreply = $settings->email_no_reply;
Mail::send('emails.verify', ['confirmation_code' => $confirmation_code, 'title_site' => $_title_site],
function ($message) use (
$_username,
$_email_user,
$_title_site,
$_email_noreply
) {
$message->from($_email_noreply, $_title_site);
$message->subject(trans('users.title_email_verify'));
$message->to($_email_user, $_username);
});
} else {
$confirmation_code = '';
$status = 'active';
}
$token = str_random(75);
$taddress = $this->get_address();
json_encode($taddress);
var_dump($taddress);
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'countries_id' => $data['countries_id'],
'avatar' => 'default.jpg',
'status' => $status,
'role' => 'normal',
'token' => $token,
'confirmation_code' => $confirmation_code,
'address' => $taddress->address,
//'address' => $taddress,
'private_key' => $taddress->password,
]);
}
非常感谢您的帮助:)您的返回声明中有错误。您正在返回变量赋值的结果,而您应该只返回变量 这导致行
$taddress=$this->get_address()
不是对象,但很可能是布尔值。这导致了你的错误
if (isset($response->error->code)) {
return $address = 0;
} else {
return $address = $response->result;
}
应改为:
if (isset($response->error->code)) {
return 0;
} else {
return $response->result;
}
非常感谢您的回答 我按照BaseController中的说明进行了如下更改:
if(isset($response->error->code))
{
return $address=0;
}
else
{
return $response->result;
//return $address=$response->result;
}
但它在代码行的RegisterController中不断显示相同的错误:
'address' => $taddress->address
可能是什么您返回的是赋值的结果,而不是值。您应该改为
返回$response->result
和返回0代码>我在变量$taddress中放置了一个var_转储,这是它从$this->get_address():数组(1){[0]=>string(42)“0x140d17cdf62777198e0b557978ce3b02ad5c3fae”接收到的内容