How to Disable a button in Yii2
Solution 1
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'])
}
Solution 2
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>
Solution 3
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();
}
});
mandev
Updated on June 27, 2022Comments
-
mandev almost 2 years
I'm trying to disable the Create Project
Button
when the user is not logged in, the button willHide
ordisable
.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?