我坚持有条件的逻辑,我需要一些帮助。我正在构建一个项目协作平台,用户可以在其中查看打开的项目并将它们组合成一个团队。我已经使加入功能正常工作但我希望有条件设置,如果他们已经是该项目组的成员,则不显示“加入此团队”按钮。我可能已经有了一些需要做的事情,但我不完全确定如何去做。 (我帮助编写了我已经实现的代码)以下是加入项目的代码:
//控制器
public function join($project){
// Set Var
$email = $this->session->userdata('email');
// Join User
$this->project_model->join_project($project, $email);
//Redirect to Project
redirect('projects');
}
//在模型中运行以获取已加入的成员并插入
public function get_team_members($id){
$this->db->select('team_members.user_id, users.first_name, users.last_name, users.location');
$this->db->from('team_members');
$this->db->where('team_members.project_id', $id);
$this->db->join('users', 'users.id = team_members.user_id');
return $this->db->get()->result_array();
}
public function join_project($id, $email){
// Get UserID
$this->db->select('id');
$this->db->from('users');
$this->db->where('email', $email);
$user = $this->db->get()->row_array();
// Set Insert Data
$data = array(
'project_id' => $id,
'user_id' => $user['id']
);
// Insert into Team DB
$this->db->insert('team_members', $data);
}
//视图
<div class="large-4 columns widget">
<div class="row collapse top-margin">
<div class="large-4 columns"></div>
<div class="large-8 column bottom-spacer">
<?php $link = base_url()."project/join/".$project['project_id']; ?>
<a href="<?php echo $link; ?>" class="button primary radius extrawide"><h5>Join this Team</h5></a>
</div>
</div>
//查看团队成员
foreach ($team as $member){ ?>
<!-- Team Member #1 -->
<div class="row collapse">
<div class="large-4 columns">
<img class="left" src="<?php echo base_url();?>assets/img/user.png" alt="user img">
</div>
<div class="large-8 columns member-name">
<p class="name"><strong><?php echo $member['first_name']." ".$member['last_name']; ?></strong></p>
<p><span><?php echo $member['location'];?></span></p>
</div>
</div>
<?php } ?>
非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用两种方法。
方法1.在模型中创建函数is_team_member($user_email, $team_id)
。如果用户存在,则返回true,否则返回false。将返回的值传递给控制器进行查看。根据值,您可以使用if条件隐藏按钮。
方法2.您可以在查看foreach循环中检查用户电子邮件。如果$email == $member["email"]
,请将标志设置为隐藏按钮。但在这种情况下,您的按钮应位于成员列表下。 Bur,正如我们在评论中所讨论的那样,您的成员列表在列表上方。因此,创建一个变量以将foreach html内容存储为字符串。您可以在按钮上方运行foreach循环并在按钮后选择内容。现在基于该标志,您可以隐藏按钮。
方法的前景 - 1:
在Controller中,团队成员列表功能。
public function index($team_id){
// Set Var
$email = $this->session->userdata('email');
$data["team"] = $this->project_model->get_team_members($team_id);
$data["is_joined_user"] = $this->project_model->is_team_members($team_id,$email);
//load view
$this->view->load("view_name", $data);
}
在模型中:
public function is_team_members($team_id,$email)
{
$this->db->select('*');
$this->db->from('team');
$this->db->join('users', 'users.id = team.user_id');
$this->db->where("user.email",$email);
$res = $this->db->get();
if($res->num_rows()>0)
return true;
else
return false;
}
在视图中:
<?php
if(! $is_joined_user)
{
?>
<a href="<?php echo $link; ?>" class="button primary radius extrawide"><h5>Join this Team</h5></a>
<?php
}
?>