如何为 Yii 中的每个按钮分配动作?
Posted
技术标签:
【中文标题】如何为 Yii 中的每个按钮分配动作?【英文标题】:How to assign action for earch button in Yii? 【发布时间】:2012-04-13 03:15:17 【问题描述】:我有一个包含团队组的页面,旁边有 delete team
按钮。
当团队不在组中时,它具有将团队添加到组的复选框和按钮。
我在 actionView 中写道,它将呈现包含团队的组列表。
GroupController 中的actionView
public function actionView($id)
$group = $this->loadModel($id);
$teamlst = Group::getAllTeamOfGroup($id);
$teamnotlst = Group::getAllTeamNotInGroup($id);
// Submit
$preSelectedItems = array();
if (isset($_POST['teamlist']))
$preSelectedItems = array();
foreach ($_POST['teamlist'] as $selectedItem)
$preSelectedItems[] = $selectedItem;
// $teamNo = Chtml::listData($teamnotlst, 'id', 'name');
//Delete
$this->render('view', array(
'model' => $group,
'teamlst' => $teamlst,
'preSelectedItems'=> $preSelectedItems,
'group_id'=>$id,
'teamnotlst' => $teamnotlst,
));
if(isset($_POST['btndeleteteam']))
TeamGroup::model()->deleteTeamGroup($team->id, $model->ID);
在查看文件中
<div class="action">
<input type="submit" name="btnupdateteam" value="Update Team">
</div>
<?php echo CHtml::endForm(); ?>
<div class ="team">
<div class="column1">
<?php foreach ($teamlst as $team): ?>
<div class="row">
<?php
echo $team->name;
?>
<input type="submit" name="btndeleteteam" value="Delete Team">
<?php
if(isset($_POST['btndeleteteam']))
TeamGroup::model()->deleteTeamGroup($team->id, $model->ID);
?>
</div>
</div><!-- comment -->
<?php endforeach; ?>
<?php
$preSelectedItems = array();
if (isset($_POST['teamlist']))
$preSelectedItems = array();
foreach ($_POST['teamlist'] as $selectedItem)
$preSelectedItems[] = $selectedItem;
$teamNo = CHtml::listData($teamnotlst, 'id', 'name');
echo CHtml:: checkBoxList('teamlist', $preSelectedItems, $teamNo);
?>
</div>
<div class ="team available">
</div>
我的想法是,当您单击delete team
按钮时,它将从组中删除团队,我有一个方法来解决这个问题
TeamGroup::model()->deleteTeamGroup($team->id, $model->ID);
当团队不在组中时,它将具有复选框和更新按钮,如果选中复选框,则会将团队添加到组中。
感谢您的提前!
【问题讨论】:
【参考方案1】:如果我理解正确你的问题是什么,那么你需要阅读这个文档章节
http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#action
您的所有操作,即delete
或add
必须驻留在控制器中,而不是在视图中
而不是这个视图:
if(isset($_POST['btndeleteteam']))
TeamGroup::model()->deleteTeamGroup($team->id, $model->ID);
?>
你必须在控制器中添加这样的东西
public function actionDelete($id)
TeamGroup::model()->deleteTeamGroup($id);
$this->redirect('group/view');
而不是这个
<input type="submit" name="btndeleteteam" value="Delete Team">
这样的东西必须在视图中
<a href="<?php echo Yii::app()->createUrl("group/delete",array('id'=>$team->id));?>">delete</a>
或者您可以修改 CGridView 以满足您的需要
【讨论】:
以上是关于如何为 Yii 中的每个按钮分配动作?的主要内容,如果未能解决你的问题,请参考以下文章