![](/img/trans.png)
[英]Laravel Controller-Model Exception Handling structure with database transactions
[英]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.