关于我的功能的一点背景:
我们已经构建了一个应用程序,允许您创建和共享某些内容,最后一步是与其他用户共享它。
我有一个打印出所有用户的视图和每个名称旁边的复选框。使用 AJAX,如果您选中或取消选中一个框,它会将用户 ID 和共享项目的 ID 插入到数据库表中。
因此,我需要加入两个表以查看谁与他们共享了该项目。一个表保存该项目,然后另一个表保存它的共享对象。
目前,我有一个 foreach 循环,可以提取所有已共享的用户 ID:
<?php foreach($shared_user as $shared_user):?>
<?= $shared_user_emails[set_default($shared_user->user_id)]; ?><br />
<?php endforeach; ?>
然后,拉出所有用户及其复选框的 foreach 循环:
<?php foreach($users1 as $user):?>
<?php $checked = ($user->id == $shared_user_emails[set_default($shared_user->user_id)])? 'checked' : '' ; ?>
<label class="checkbox"><input type="checkbox" class="template_permissions" data-id="<?= $user->id?>" <?= $checked ?> /><?= $user->email ?></label>
你会在上面的 foreach 中看到,我做了:
$user->id == $shared_user_emails[set_default($shared_user->user_id)])? 'checked' : '' ;
也就是说,如果共享用户 ID 等于用户 ID,则对输入应用“检查”。这很好用,但仅适用于一个用户,而不是循环遍历所有用户。
一切都在共享并正常工作,但是只会选中一个复选框,而不是检查所有用户是否已共享。
我相信我需要以某种方式将这两个循环结合起来,显然只是拉入最后一个共享的人并检查他们的框。
我已经尝试将这两个循环组合大约一天了,有人可以帮忙吗?
谢谢!
编辑
以下是从我的控制器中创建变量的方式:
load_model('user_model', 'users');
$users = $this->users->users_by_company($company_id);
load_model('template_user_model', 'template_users');
$shared_users = $this->template_users->get_many_by('template_id', $template_id);
$this->data['shared_user'] = $shared_users;
$this->data['shared_user_emails'] = $this->user_model->dropdown('id');
不是 100% 确定 set_default 是做什么的,但是在尝试解决这个问题时这应该不是问题......
编辑
这是根据要求使用 print_r 包含在变量中的内容:
使用:
<p>shared_user_emails:</p>
<?php print_r($shared_user_emails); ?>
<p>shared_user:</p>
<?php print_r($shared_user); ?>
<p>User:</p>
<?php print_r($user); ?>
出品:
共享用户电子邮件:
Array (
[2] => 2
[3] => 3
[17] => 17
[19] => 19
)
共享用户:
stdClass Object (
[template_id] => 58
[user_id] => 3
)
用户:
stdClass Object (
[id] => 19
[name] => Steve
[title] =>
[phone] =>
[ext] =>
[email] => mike+whatev@fake.com
[active] => 1
[group_id] => 3
[group] => users
)
并且:$shared_user_emails[set_default($shared_user->user_id)]
打印出“3”