私は、次のシナリオを持っています。ユーザーがメッセージを投稿した場合、他のユーザーはメッセージを承認できますが、編集者または削除者のみがメッセージを承認できます。ユーザーが承認を出しているかどうかをチェック
以下のifステートメントは動作するはずですが、動作しません。
<td>
<?php $author = array(
$message->user_id == $this->session->userdata('id')
); ?>
<?php if($author): ?>
<?php echo anchor('admin/messages/edit/'.$message->id.'', 'Edit', 'class="btn btn-primary"'); ?>
<?php echo anchor('admin/messages/delete/'.$message->id.'', 'Delete', 'class="btn btn-danger"'); ?>
<?php endif; ?>
<?php if(!$author): ?>
<?php echo anchor('admin/messages/approve/'.$message->id.'', 'Approve', 'class="btn btn-success"'); ?>
<?php endif; ?>
</td>
以下のコードは、は、以下の方法が
public function approve($id, $data) {
$this->db->where('sms_id', $id);
$this->db->update('approval',$data);
}
public function some_approve($id, $approval_data)
{
$this->db->where('id', $id);
$this->db->update('messages',$approval_data);
}
を作業しているモデル public function approve($id)
{
$this->db->select('*');
$this->db->from('approval');
$this->db->join('messages', 'messages.id = approval.sms_id');
$query = $this->db->get();
$first_approval = $query->row('first_approval');
$second_approval = $query->row('second_approval');
$third_approval = $query->row('third_approval');
if ($first_approval == null) {
$data = array(
'first_approval' => $this->session->userdata('user_id')
);
$approval_data = array(
'approvals' => 'one'
);
$this->Message_model->some_approve($id, $approval_data);
$this->Message_model->approve($id, $data);
//Activity array
$data = array(
'resource_id' => '',
'type' => 'message',
'action' => 'approved',
'user_id' => $this->session->userdata('user_id'),
'message' => 'Message was approved'
);
//Insert Activity
$this->Activity_model->add($data);
//isset Message
$this->session->set_flashdata('success', 'Your approval was send');
//Redirect
redirect('admin/messages');
} elseif ($second_approval == null && $this->session->userdata('user_id') != $first_approval) {
$data = array(
'second_approval' => $this->session->userdata('user_id')
);
$approval_data = array(
'approvals' => 'two'
);
$this->Message_model->some_approve($id, $approval_data);
$this->Message_model->approve($id, $data);
//Activity array
$data = array(
'resource_id' => '',
'type' => 'message',
'action' => 'approved',
'user_id' => $this->session->userdata('user_id'),
'message' => 'Message was approved'
);
//Insert Activity
$this->Activity_model->add($data);
//isset Message
$this->session->set_flashdata('success', 'Your approval was send');
//Redirect
redirect('admin/messages');
} elseif ($third_approval == null && $this->session->userdata('user_id') != $second_approval && $this->session->userdata('user_id') != $first_approval) {
$data = array(
'third_approval' => $this->session->userdata('user_id')
);
$approval_data = array(
'status' => 'Approved',
'approvals' => 'three'
);
$this->Message_model->approve($id, $data);
$this->Message_model->some_approve($id, $approval_data);
//Activity array
$data = array(
'resource_id' => '',
'type' => 'message',
'action' => 'approved',
'user_id' => $this->session->userdata('user_id'),
'message' => 'Message was approved'
);
//Insert Activity
$this->Activity_model->add($data);
//isset Message
$this->session->set_flashdata('success', 'Your approval was send and the message has passed');
//Redirect
redirect('admin/messages');
} elseif ($third_approval == $this->session->userdata('user_id') || $this->session->userdata('user_id') == $second_approval || $this->session->userdata('user_id') == $first_approval) {
//isset Message
$this->session->set_flashdata('success', 'You already have send an approval');
//Redirect
redirect('admin/messages');
} else {
$approval_data = array(
'status' => 'Approved',
'approvals' => 'three'
);
$this->Message_model->some_approve($id, $approval_data);
//isset Message
$this->session->set_flashdata('success', 'Your approval was send and the message has already been send');
//Redirect
redirect('admin/messages');
}
}
にデータを渡す前条件をチェックすることになっている私のコントローラ内の方法を承認しています
私のコントローラとボタンのif条件は、 Hエラーが表示されていないが、以下の条件が間違っている場合、彼らは
あなたの質問にはいくつかの考えがあります:あなたはたくさんのコードを持っていて、私は本当に '<?php if($ author):?>'に止まってしまいました。なぜあなたは '$ author'に配列を格納しているのでしょうか? '$ author = $ message-> user_id == $ this-> session-> userdata( 'id')'のようなブール値ではないでしょうか?これはあなたのifで意味をなさないでしょうが、配列ではありません... –