如何为 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

您的所有操作,即deleteadd 必须驻留在控制器中,而不是在视图中

而不是这个视图:

        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 中的每个按钮分配动作?的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d中如何为按钮添加动作

动作脚本 3. 将影片剪辑分配给其他影片剪辑

在Dreamweaver里如何为按钮的点击添加声音?

如何为数组/ JavaScript中的每个项目创建不同的按钮

如何为WordPress主题添加一个返回顶部按钮

在 FirstVC 中选择单元格后,如何为 SecondVC 中的每个单元格调用按钮操作?