に変換し、ブラウザはメッセージTrying to get property of non-object
を出力します。 コントローラ内部PHPのエラー:配列オブジェクトは、私がレコードを編集し、データが<em>無効</em>あるときはいつでも、私だけではなく、検証エラーメッセージを表示するので、CodeIgniterの3</p> <p>を使用してCRUDアプリケーションを作っていた連想配列
私の更新機能は、次のようになります。
public function update($customer_id) {
// data validation
$this->form_validation->set_rules('first_name', 'First name', 'required');
$this->form_validation->set_rules('last_name', 'Last name', 'required');
$this->form_validation->set_rules('email', 'Email address', 'required|valid_email');
$this->form_validation->set_rules('phone', 'Phone number', 'required');
$this->form_validation->set_rules('country', 'Country', 'required');
$this->form_validation->set_error_delimiters('<p class="error">', '</p>');
if ($this->form_validation->run()) {
$data = [
// insert into these database table fields
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'email' => $this->input->post('email'),
'phone' => $this->input->post('phone'),
'country' => $this->input->post('country'),
'city' => $this->input->post('city'),
'address' => $this->input->post('address')
];
$this->load->model('Customer');
if ($this->Customer->updateCustomer($customer_id, $data)) {
$this->session->set_flashdata('update-response','Customer successfully updated');
} else {
$this->session->set_flashdata('update-response','Failed to update customer');
}
redirect('home');
} else {
$data = [
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'email' => $this->input->post('email'),
'phone' => $this->input->post('phone'),
'country' => $this->input->post('country'),
'city' => $this->input->post('city'),
'address' => $this->input->post('address'),
'id' => $customer_id
];
$this->load->view('update', ['customer' => $data]);
}
}
を更新フォーム内のデータがエラーがない場合に有効です。フォームは、次のようになります。
<?php echo form_open("home/update/{$customer->id}"); ?>
<div class="form-group <?php if(form_error('first_name')) echo 'has-error';?>">
<?php echo form_input('first_name', set_value('first_name', $customer->first_name),[
'id' => 'first_name',
'class' => 'form-control'
]);
if(form_error('first_name')) echo '<span class="glyphicon glyphicon-remove"></span>';
echo form_error('first_name'); ?>
</div>
<div class="form-group <?php if(form_error('last_name')) echo 'has-error';?>">
<?php echo form_input('last_name', set_value('last_name', $customer->last_name), [
'id' => 'last_name',
'class' => 'form-control'
]);
if(form_error('last_name')) echo '<span class="glyphicon glyphicon-remove"></span>';
echo form_error('last_name'); ?>
</div>
<div class="form-group <?php if(form_error('email')) echo 'has-error';?>">
<?php echo form_input('email', set_value('email', $customer->email), [
'id' => 'email',
'class' => 'form-control'
]);
if(form_error('email')) echo '<span class="glyphicon glyphicon-remove"></span>';
echo form_error('email'); ?>
</div>
<div class="form-group <?php if(form_error('phone')) echo 'has-error';?>">
<?php echo form_input('phone', set_value('phone', $customer->phone), [
'id' => 'phone',
'class' => 'form-control'
]);
if(form_error('phone')) echo '<span class="glyphicon glyphicon-remove"></span>';
echo form_error('phone'); ?>
</div>
<div class="form-group <?php if(form_error('country')) echo 'has-error';?>">
<?php echo form_input('country', set_value('country', $customer->country), [
'id' => 'country',
'class' => 'form-control'
]);
if(form_error('country')) echo '<span class="glyphicon glyphicon-remove"></span>';
echo form_error('country'); ?>
</div>
<div class="form-group">
<?php echo form_input('city', set_value('city', $customer->city), [
'id' => 'city',
'class' => 'form-control'
]);
?>
</div>
<div class="form-group">
<?php echo form_input('address', set_value('city', $customer->address), [
'id' => 'address',
'class' => 'form-control'
]);
?>
</div>
<div class="form-group">
<?php echo form_submit('submit', 'Save', 'class = "btn btn-success btn-block"'); ?>
</div>
<?php echo form_close(); ?>
私は$customer
を連想配列になっていると、このエラーメッセージの原因であると考えている:Trying to get property of non-object
。しかし、この変換の原因は何ですか?それとも、問題の原因がまったく違うのですか?
甘いです!上記のコードを最適化する可能性はありますか? –
正確に最適化するものは何ですか?実際には単純な形式なので、ビューで変数をエコーするときに注意してください。XSSの問題を避けるためにエンコードするようにしてください。 – Twisted1919
CIは安全なものではありませんか? –