【问题标题】:Extracting Cakephp Multidimensional arrays提取 Cakephp 多维数组
【发布时间】: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[]=2 afaik 的 url。仍然是 POST 更有意义。
  • 为了更清楚我评论的后半部分,链接数组中的'id' => $arrOfExtractedIdslink() 方法的第二个参数。或 $ids = array('id' => $arrOfExtractedIds' ); 和 '?' => $ids 作为 GET 参数传递
  • 在视图中,我没有创建表单。表单是在控制器内部创建的(包括 saveAll)。我使用$this->set('users_details',$users_details) 来显示 .ctp 文件中的所有用户信息。(仅用于显示 - 名称、类等)。提交按钮是唯一会运行提交的东西。如果没有$this->User->create 在视图中,这可以实现吗?简单地说,用户信息已经保存在控制器中,我只需要通过单击提交按钮通知他们他们的帐户已经准备好,然后将信息发送给他们。
  • 我建议您使用 bin.cakephp.org 并粘贴您的控制器、模型和表单,因为我无法理解您要做什么。

标签: cakephp


【解决方案1】:

第一个问题的答案

 $data_final =array();
    foreach($findas $d)
    {
        $data_final[]  =$d['User'];
    }

那你就成功了

Array
(
    [0] => Array
        (
            [id] => 2
            [name] => joe
            [age] => 13
            [class] => D
        )

    [1] => Array
        (
            [id] => 4
            [name] => lamber
            [age] => 23
            [class] => E
        )

)

第二个问题的答案 您使用 url 的方式不是一个好习惯。你应该张贴记录

【讨论】:

  • foreach 循环中有两个错别字。
  • 两个错别字是什么意思?
  • foreach($$findas $d) 应该是foreach($find as $d)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 2020-06-11
  • 1970-01-01
相关资源
最近更新 更多