1

I'm using this for the first time. I want create a new form to edit user detail. I get an error of Array to string conversion,

If I remove the <?= validation_errors() ?>, the view looks good

this is my controller code



public function edit_info($id)
    {
        helper('form');

        if (! $this->request->is('post')){
            return view('templates/header',['title'=>'what','id'=>$id])
                . view('customers/edit_info')
                . view('templates/footer');
        }

        $post = $this->request->getPost(['client_id','cli_name','cli_tel','email','address','password']);

        if (! $this->validateData($post, [
            'client_id'  => 'required|max_length[25]|min_length[1]',
            'cli_name'  => 'required|max_length[25]|min_length[5]',
            'cli_tel'   => 'required|max_length[30]|min_length[9]',
            'email'     => 'required|max_length[50]|min_length[10]',
            'address'   => 'required|max_length[255]min_lenght[5]',
            'password'  => 'required|max_length[32]|min_length[8]',
        ])){
            return view('templates/header',['title'=>'what','id'=>$id])
                . view('customers/edit_info')
                . view('templates/footer');
        }

        $client_model = model(CustomerModel::class);
        $user_model = model(UserModel::class);
        $userId = $user_model->getUserByClient($post['client_id']);

        $client_model->update($post['client_id'],[
            'client_Nom' => $post['client_name'],
            'client_Tel' => $post['client_tel'],
            'client_Email' => $post['email'],
            'client_Adr' => $post['address'],
            'client_status' => 1,
        ]);

        $user_model->update($userId['id'],[
            'client'    => $post['client_id'],
            'password'  => $post['password']
        ]);

        $name = $user_model->getName($userId['id']);

        return view('templates/header',['name' => $name['name']])
            . view('customers/success')
            . view('templates/footer');
    }

And my view code

<h2><?= esc($title)?></h2>

<?= session()->getFlashdata('error') ?>
<?= validation_errors() ?>

<form action="/customers/edit_info" method="post">
    <?= csrf_field() ?>
    <input type="hidden" name="client_id" value="<?= esc($id)?>" >
    <label for="cli_name">Name</label>
    <input type="text" name="cli_name" value="<?= set_value('cli_name') ?>" >
    <br/>
    <label for="tel">Tel</label>
    <input type="text" name="tel" value="<?= set_value('tel') ?>" >
    <br/>
    <label for="email">Email</label>
    <input type="email" name="email" value="<?= set_value('email') ?>" >
    <br/>
    <label for="address">Address</label>
    <textarea name="address" cols="45" rows="4"><?= set_value('address') ?></textarea>
    <br/>
    <label for="password">Password</label>
    <input type="password" name="password" value="<?= set_value('password') ?>" >
    <br/>
    <label for="again_pwd">Password Again</label>
    <input type="password" name="again_pwd" onblur="check_both_pwd()" >
</form>

and this is my backtrace Backtrace

Yapeng
  • 29
  • 2

0 Answers0