简体   繁体   中英

How to Disable a button in Yii2

I'm trying to disable the Create Project Button when the user is not logged in, the button will Hide or disable .

And this is my condition:

<p>
    <?php
    if (Yii::$app->user->isGuest) {
        Html::a('Create a Project', ['create'], ['class' => 'btn btn-primary btn-xs']);
    } elseif(Yii::$app->user->identity->username) {
        Html::a('Create a Project', ['create'], ['class' => 'btn btn-success']);
    }
    ?>
</p>

It's working, But, when the user is logged in, the button is already Hide!

How can disable or hide the button in Yii2 and fix that problem?

is there any tutorial about that?

You need to add a disabled attribute to disable the button, or to hide it completely you can use CSS style=display: none;

Both are used in the code below

<p>
    <?php
        if (Yii::$app->user->isGuest) {
            // This button will be displayed, but is disabled 
            Html::a('Create a Project', ['create'], ['class' => 'btn btn-primary btn-xs', 'disabled' => 'disabled']);
        } elseif(Yii::$app->user->identity->username) {
            Html::a('Create a Project', ['create'], ['class' => 'btn btn-success']);
        } else {
            // This button will not be displayed (it is hidden)
            Html::a('Create a Project', ['create'], ['class' => 'btn btn-primary btn-xs', 'style' => 'display: none;']);
        }
    ?>
</p>

First of all you cannot disable a tag. disabled attribute works fine on Button tags eg:

<?= Html::Button('Project', ['class' => 'btn btn-success', 'disabled' => Yii::$app->user->isGuest ]) ?>

If you really want to disable a tag then you can use this example:

HTML:

<a id="a1" href="http://www.google.com">Google 1</a>

Javascript:

$('#a1').attr('disabled', 'disabled');

$('a').on('click', function(e) {
    if ($(this).attr('disabled') == 'disabled') {
        e.preventDefault();
    }
});

If you are just checking for logged in user then Use !Yii::$app->user->isGuest and you forget echo :

if (!Yii::$app->user->isGuest) {
        echo Html::a('Create a Project', ['create'], ['class' => 'btn btn-primary btn-xs'])
} 

试试这个代码:

<?= Html::a('Create a Project', ['create'],['class' =>'btn btn-primary disabled']); ?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM