在CODEIGNITER中访问应该禁用的函数的问题 [英] Issue in accessing a supposedly disabled function in CODEIGNITER

查看:114
本文介绍了在CODEIGNITER中访问应该禁用的函数的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序中发现了一个非常重要的问题。这是关于租用功能。即使申请人已被聘用,如果客户点击建议页面上的拒绝按钮,状态从已批准变为已拒绝。



我想我应该改变这一部分:

  public function approve_job_proposal($ job_id,$ provider_id,$ proposal_id) 
{
//在已接受/批准投标时将作业状态更新为已关闭
$ data = array

'provider_id'=> $ provider_id,
'status'=>获奖
);

$ this-> db-> where('id',$ job_id);
$ this-> db-> update('job',$ data);

$ data = array

'status'=>Approved
);

$ this-> db-> where('id',$ proposal_id);
$ this-> db-> update('job_proposal',$ data);

}

public function reject_job_proposal($ job_id,$ provider_id,$ proposal_id)
{
//将提供者的作业建议更新为已拒绝
$ data = array

'status'=>Rejected
);

$ this-> db-> where('id',$ proposal_id);
$ this-> db-> update('job_proposal',$ data);

}

如果客户已经被雇用,

解决方案

您可以检查您的数据库,以确保提案还没有被接受这些行的东西。如果你想为两个实例(接受和拒绝)执行它,也许你可以将检查移动到一个附加的函数,检查一个提案是否已经处于结束状态(即接受或拒绝)。

reject_job_proposal 方法的示例可以是...

  public function reject_job_proposal($ job_id,$ provider_id,$ proposal_id)
{
$ this-> db-> select('status');
$ this-> db-> from('job_proposal');
$ this-> db-> where('id',$ proposal_id);
$ query = $ this-> db-> get();
$ result = $ query-> row();
if($ result-> status ==='Accepted'){
// Throw错误消息,例如'对不起,这个工作已经被接受了!'
return;
}

...
}


I realized a very significant problem in my application. It's about hire function.What happens is even an applicant has already been hired, if the client clicks the reject button on the proposals page, the status changes from "Approved" to rejected.

I think I should change something in this part:

public function approve_job_proposal($job_id, $provider_id, $proposal_id) 
{
    //updates job status to "Closed" when a proposal is already accepted/approved
    $data = array
    (
        'provider_id' => $provider_id,
        'status' => "Awarded"
    );

    $this->db->where('id', $job_id);
    $this->db->update('job', $data);

    $data = array
    (
        'status' => "Approved"
    );

    $this->db->where('id', $proposal_id);
    $this->db->update('job_proposal', $data);

}

public function reject_job_proposal($job_id, $provider_id, $proposal_id) 
{
    //updates provider's job proposal to "Rejected"
    $data = array
    (
        'status' => "Rejected"
    );

    $this->db->where('id', $proposal_id);
    $this->db->update('job_proposal', $data);

}

How do I disable any button if the client has already hired such provider?

Thanks in advance!

解决方案

You can check your database to ensure the proposal has not already been accepted with something along these lines. If you want to do it for both instances (accept, and reject), perhaps you could move the check into an additional function that checks to see if a proposal is already in an 'ending' state (i.e. Accepted or Rejected).

A sample addition to your reject_job_proposal method could be...

public function reject_job_proposal ($job_id, $provider_id, $proposal_id) 
{
    $this->db->select('status');
    $this->db->from('job_proposal');
    $this->db->where('id', $proposal_id);
    $query  = $this->db->get();
    $result = $query->row();
    if ($result->status === 'Accepted') {
        // Throw error message, e.g. 'Sorry, this job has been accepted!'
        return;
    }

    ...
}

这篇关于在CODEIGNITER中访问应该禁用的函数的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆