Как создавать формы с несколькими кнопками отправки

Я новичок в Yii framework. Я использую form.php для обновления полей таблицы. Итак, теперь я использую эту форму с тремя кнопками отправки — [Save, Accept, Reject]. Форма теперь имеет следующие поля.

<div class="row">
    <?php //$model->ReviewedDate=date('Y-m-d H:i:s');?>
    <?php echo $form->labelEx($model,'ReviewedDate'); ?>
    <?php echo $form->textField($model,'ReviewedDate',array('value'=>'0000-00-00 00:00:00','readonly' => true));te  ?>
    <?php echo $form->error($model,'ReviewedDate'); ?>
            </div>
<div class="row">
    <?php echo $form->labelEx($model,'Approved'); ?>
    <?php echo $form->textField($model,'Approved'); ?>
    <?php echo $form->error($model,'Approved'); ?>
</div>    
<div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save',array('confirm' => 'Are you sure to save')); ?></div>

Выше есть поле «Утверждено». Теперь, когда я нажимаю «Сохранить», все остальные поля должны обновляться, кроме утвержденного. (Утверждено по умолчанию 0). Поэтому, когда я нажимаю кнопку «Утвердить», она должна обновлять «Утверждено», а также другие поля. Когда я нажимаю «Отклонить», поле «Утверждено» должно обновляться до 0. Как я могу это сделать.


person user2770039    schedule 27.09.2013    source источник


Ответы (3)


Вы можете использовать три кнопки отправки и управлять функциональностью в соответствии с этим. В форме создайте 3 кнопки, как показано ниже:

<?php echo CHtml::submitButton('Save', array('name' => 'save')); ?>
<?php echo CHtml::submitButton('Accept', array('name' => 'accept')); ?>
<?php echo CHtml::submitButton('Reject', array('name' => 'reject')); ?>

В контроллере проверьте, какая кнопка нажата, как показано ниже:

<?php 
if(isset($_POST['save'])){
    //save submit button is click and code for save button will be here    
}
if(isset($_POST['accept'])){
    //accept submit button is click and code for accept button will be here    
}
if(isset($_POST['reject'])){
    //reject submit button is click and code for reject button will be here    
} ?>

Всего наилучшего :)

person Maulik Bhojani    schedule 27.09.2013
comment
<?=Html::submitButton('Disconnect', ['id'=>'d','name'=>'dco','class' => 'btn btn-primary']);?> и в контроллере var_dump(isset($_POST['dco'])); die(); дает мне bool(false) - person Moeez; 26.05.2019

Вместо трех кнопок отправки я предлагаю вам использовать раскрывающийся список, чтобы ваши пользователи могли выбрать желаемое действие. Затем вы проверяете значение раскрывающегося списка, чтобы «Сохранить», «Принять» или «Отклонить».

echo CHtml::dropDownList('action', '', array('Accept', 'Reject'));

И в вашем контроллере:

if (isset($_POST['ModelName'])) {
    switch ($_POST['action']) {
        case 'Accept':
            # code for Acceptance
            break;

        case 'Reject':
            # code for Rejection
            break;
    }
    //Continue with Saving the Model data here
}
person Oladapo Omonayajo    schedule 27.09.2013
comment
<?=Html::submitButton('Disconnect', ['id'=>'d','name'=>'dco','class' => 'btn btn-primary']);?> и в контроллере var_dump(isset($_POST['dco'])); die(); дает мне bool(false) - person Moeez; 26.05.2019

Вы можете добавить hiddenField с помощью действия:

<?php echo $form->hiddenField($model, 'typeSubmit'); ?> // Add 'typeSubmit' attribute on the model

И 3 кнопки отправки. Каждая кнопка ставит на скрытое поле тип Submit.

<?php echo CHtml::submitButton('Save', array('class'=>'btn','onclick'=>'$("#ModelName_typeSubmit").val("save");')); ?> // #ModelName = $model name class.
<?php echo CHtml::submitButton('Accept', array('class'=>'btn','onclick'=>'$("#ModelName_typeSubmit").val("accept");')); ?>
<?php echo CHtml::submitButton('Reject', array('class'=>'btn','onclick'=>'$("#ModelName_typeSubmit").val("reject");')); ?>
person Daniel Vaquero    schedule 27.09.2013
comment
Я пробовал это, но не работает - ‹?php echo $form-›hiddenField($model, 'Approved'); ?› ‹?php echo CHtml::submitButton('Сохранить', array('class'=›'btn','onclick'=›'$(MessageTemplate_Approved).val(save);')); ?› ‹?php echo CHtml::submitButton('Accept', array('class'=›'btn','onclick'=›'$(MessageTemplate_Approved).val(accept);')); ?› ‹?php echo CHtml::submitButton('Отклонить', array('class'=›'btn','onclick'=›'$(MessageTemplate_Approved).val(reject);')); ?› - person user2770039; 27.09.2013