簡體   English   中英

從控制器模型中的for循環獲取值(php)

[英]Get values from for loop in controller-model (php)

我使用yii框架,但是這里有一個php問題。 我很難從一個循環開始獲取數據,該循環開始於我的控制器,持續到我的模型,直到我的控制器結束。 這是我的代碼:

adminController.php

public function actionAdmin()
{
////code generated by gii////
    $model=new vbnm('search');
    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['vbnm'])){
        $model->attributes=$_GET['vbnm'];
    }

////my code////
    $groupid=array();

    $dataArray = vbnm::model()->search()->getData();

    foreach($dataArray as $data){
        $groupid[] = $data->groupvb['joinvbgroup_group_id'];
    }
    $size = count($groupid);

    $values = array();

    for ($i=0; $i<$size; $i++){
        $model->get_user_name($groupid[$i]);
    }

    $this->render('admin',array(
        'model'=>$model,
    ));
}

adminModel.php

public function get_user_name($groupId)
{           
    $userid = array();

    $user = Yii::app()->db->createCommand()
    ->select('joinusergroup_user_id')
    ->from('JoinUserGroup')
    ->where('joinusergroup_group_id=:id', array(':id'=>$groupId))
    ->query();

    foreach($user as $key=>$value){
        $userid[] = $value['joinusergroup_user_id'];
    }

    $size=count($userid);

    $username = array();

    for($i=0; $i<$size; $i++){

        $name = Yii::app()->db->createCommand()
        ->select('username')
        ->from('tbl_users')
        ->where('id=:id', array(':id'=>$userid[$i]))
        ->query();

        foreach($name as $key=>$value){
            $username[] = $value['username'];
        }

        $size_n = count($username);

        $uname=array();

        for($j=$i; $j<$size_n; $j++){
            $uname[]=$username[$j];
        }
    }   
}

該代碼有效,當我登錄$ userid [$ i]和$ username [$ j]時,得到了想要的東西。

我的問題是:如何在控制器中(循環結束時)返回$ username [$ j]的值以在視圖中傳遞它(我想在CGridView中顯示它)? 如果我使用return,它將停止我的循環,對嗎? 我可能會不好用MVC嗎?

謝謝!

是的,實際上,這看起來不是很干凈的MVC :-)我建議您做的是將所有邏輯包裝到Yii FormModel中。 您會發現它簡化了檢索信息以顯示在表單上的方式,並使保存變得更加容易(所有保存邏輯都放在一個位置)。

本質上,FormModels可以處理多個AR模型,並且可以輕松地在它們之間進行保存。

編輯:為了幫助改善代碼,我建議開始進行單元測試/考慮如何測試此邏輯。 您希望控制器中的邏輯相對較少,以便大多數應用程序邏輯都包含在可以測試的模型中。

建議閱讀: http : //www.yiiframework.com/doc/guide/1.1/en/basics.best-practices

http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/-Ruby on Rails,但是它有很好的建議,可以應用於Yii

要將值傳遞到“管理員”視圖,請將用戶名存儲在$ values數組中。

然后通過render方法將其傳遞給視圖。

$this->render('admin',array(
        'model'=>$model,
        'usernames' => $values
));

// admin view
// and in the 'admin' view file you can access it like this.
print_r($usernames);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM