【发布时间】:2012-05-20 19:39:42
【问题描述】:
我需要从 id 数组 ($user_id = array();) 中找到所有记录以保存到通知表中,以告知这些用户他们的帐户已激活。
执行完这些后,
$x = $this->User->find('all',array('conditions'=>array('User.id'=>$user_id)));
$find = Set::extract('/User', $x);
我得到这个结果:
Array(
[0] => Array
(
[User] => Array
(
[id] => 2
[name] => joe
[age] => 13
[class] => D
)
)
[1] => Array
(
[User] => Array
(
[id] => 3
[name] => lambert
[age] => 14
[class] => E
)
)
)
我需要通过提取上面的数组来获得下面的数组
Array
{
[id] => 2
[name] => joe
[age] => 13
[class] => D
}
Array
{
[id] => 3
[name] => lambert
[age] => 14
[class] => E
}
如何使用 CakePHP 实现这一点? 那么,在我看来,如何根据上面提取的数组发送多条记录? 是否可以在视图内创建一个 foreach 循环?
echo $html->link(__('Send',true),array('controller'=>'users','action'=>'notifications',$user_id),array('class'=>'button'));
显然,将链接放在循环中会导致两个具有不同 id 的链接($user_id = 2 和 $user_id = 3)。我不希望这种情况发生。我想要一个可以一次性提交这些 ID 的链接。
【问题讨论】:
-
1) 是的,您可以在视图中循环播放。 2)表单不是更有意义,那么您可以使用按钮发布所有ID。虽然,提取所有像
{n}.User.id这样的 id 并将其传递给link()方法应该可以工作。创建一个看起来像controller/action/id[]=1&id[]=2afaik 的 url。仍然是 POST 更有意义。 -
为了更清楚我评论的后半部分,链接数组中的
'id' => $arrOfExtractedIds(link()方法的第二个参数。或 $ids = array('id' => $arrOfExtractedIds' ); 和'?' => $ids作为 GET 参数传递 -
在视图中,我没有创建表单。表单是在控制器内部创建的(包括 saveAll)。我使用
$this->set('users_details',$users_details)来显示 .ctp 文件中的所有用户信息。(仅用于显示 - 名称、类等)。提交按钮是唯一会运行提交的东西。如果没有$this->User->create在视图中,这可以实现吗?简单地说,用户信息已经保存在控制器中,我只需要通过单击提交按钮通知他们他们的帐户已经准备好,然后将信息发送给他们。 -
我建议您使用 bin.cakephp.org 并粘贴您的控制器、模型和表单,因为我无法理解您要做什么。
标签: cakephp