Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel控制器在尝试获取属性时显示错误';地址';非对象_Php_Laravel_Controller - Fatal编程技术网

Php Laravel控制器在尝试获取属性时显示错误';地址';非对象

Php Laravel控制器在尝试获取属性时显示错误';地址';非对象,php,laravel,controller,Php,Laravel,Controller,将带有以太坊地址的数组传递给控制器会显示 尝试获取非对象的属性“地址”时出错 我正在使用Laravel和区块链以太坊开发Dapp,我已经配置了自己的以太坊节点 我的BaseController带有一个公共函数,该函数调用JSONRPC到URL API,并向RegisterController返回一个地址,但它在代码行“address”=>$taddress->address中尝试获取非对象的属性“address”时出错 有人能帮我吗 我留下每个控制器的代码 BaseController publ

将带有以太坊地址的数组传递给控制器会显示 尝试获取非对象的属性“地址”时出错

我正在使用Laravel和区块链以太坊开发Dapp,我已经配置了自己的以太坊节点

我的BaseController带有一个公共函数,该函数调用JSONRPC到URL API,并向RegisterController返回一个地址,但它在代码行“address”=>$taddress->address中尝试获取非对象的属性“address”时出错

有人能帮我吗

我留下每个控制器的代码

BaseController

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”接收到的内容