Yii2 urlManager

config/main.php dosyasında bulunan UrlMaanger componenti ile Yii projelerinizde görünen Url yapınızı biçimlendirebilirsiniz.
basit haliyle :

‘urlManager’ => [

‘enablePrettyUrl’ => true,
‘showScriptName’ => false,

],

Burada yaptıgımız işlemler;

‘enablePrettyUrl’ => true,

Pretty url yi etkinleştimek : sadece bu işlemi yaptıgınızda projenizde var olan linklere tıkladıgınızda “?r=site/about” şeklinde değil “/site/about” şeklinde yönlendirilmeye başladığını göreceksiniz.

ancak bazı yönlendirmeler hala çalışmıyor:

çözümü için “web/” dizininde yeni bir “.htaccess” dosyası oluştuyoruz.

ve içeriği:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php?r=$1 [L,QSA]

ve artık linklerimiz çalışıyor.

ancak id veya parametre içeren sayfalara gittiğinizde hala “/user/update?id=2” urller görüyoruz. Hadi bunları da yönlendirelim,

bunun için yine config/main.php dosyamıza gidelim ve rules kısmına;

‘urlManager’ => [
‘enablePrettyUrl’ => true,
‘showScriptName’ => false,
‘rules’ => [

&#8216;<controller:\w+>/<id:\d+>&#8216;=>&#8217;<controller>/view&#8217;,
&#8216;<controller:\w+>/<action:\w+>/<id:\d+>&#8216;=>&#8217;<controller>/<action>&#8216;,
&#8216;<controller:\w+>/<action:\w+>&#8216;=>&#8217;<controller>/<action>&#8216;,

],
],

şeklinde ekleyelim.

artık urllerimiz sağlıklı çalışıyor.

Yii2 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at [email protected] to inform them of the time this error occurred, and the actions you performed just before this error.
Devamı

More information about this error may be available in the server error log.

Merhaba üstteki can sıkıcı hatayı birçok sebeple almış olabilirsiniz şayet yii2 ile oluşturdunuz bir sayfayı yayına alırken bu hatayı aldıysanız ve yii2 seo url özellği için .htaccess yapılandırması yaptıysanız ve hata loglarında

$’RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration

gibi bir log varsa hatanızın çözümü için sunucunuzda aşağıdaki komutları çalıştırmanız veya sistem yöneticinizden talep etmeniz yeterli olacaktır.;

a2enmod rewrite
systemctl restart apache2

Yii2 image::watermark

Merhaba, Bu yazımızda yii2 de upload ettiğimiz görsellerin üstüne watermark görseli ekleme özelliğine değineceğiz.

Örnek kodlar:

$watermarkLogo=’../upload-dizini/logo/logo.png”;
$img=’../upload-dizini/gorsel-adi.png”;
$newImage = Image::watermark($img, $watermarkLogo, [50,50]);
//[50,50] Uygulacak watermark pozisyonu
$newImage->save(‘../../uploads/images/upload/yeni-resim.jpg’);

SweetAlert Confirm & Ajax Get Delete Confirm

swal({
title: ‘Bunu Galeriden Kaldırmak İstiyormusunuz?’,
text: ‘Görsel silinmeyecek saece galeriden kaldırılacak.’,
type: ‘warning’,
showCancelButton: true,
confirmButtonColor: ‘#3085d6’,
cancelButtonColor: ‘#d33’,
confirmButtonText: ‘Evet, Bunu Sil’,
cancelButtonText: ‘Hayır, Vazgeçtim’
}).then(function(isConfirm) {
if(isConfirm.value) {
var deleteId = id;
var request = $.ajax({
url: “?r=controller/deleteitem”,
type: “GET”,
data: {id: id},
dataType: “html”
});

request.done(function (msg) {
swal(
‘Silindi’,
‘Silme işlemi başarılı’,
‘success’
);
});

request.fail(function (jqXHR, textStatus) {
swal(
‘Silinemedi!’,
‘Silme işlemi gerçekleştirilemedi! Hata:’ + textStatus,
‘success’
);
});
}else{
swal(“İşlem iptal edildi”);
}

})

Yii Framework Not Found (#404) Fix Problem

Merhaba , Bu bölümde Yii2 ‘de Crud ile oluşturulmuş sayfalarda oluşan ve çok küçük olmasının yanında mide bulandırıcı olabilen bir hata’ya ve çözümüne yer vericez.
Devamı

Yii2 ‘de Crud sayfasına geldiniz Controller ve View ‘inizi oluşturdunuz ve sayfanızı görmek için çalışırdınız o da ne önünüzde kocaman bir

Not Found (#404)
Page not found.

The above error occurred while the Web server was processing your request.

Please contact us if you think this is a server error. Thank you.

Hatası 🙂

Bu hata aslında Crud kısmında kullandığınız “Base Controller Class” kısmında yazdığınız “yii\web\Controller” kısmından kaynaklı olması gereken “yii\web\controller”

Controller’ınızın en üst satırında bulunan “namespace backend\Controllers”; kısmını “namespace backend\controllers;” olarak düzeltirseniz sorun çözülecektir.

Yii2 Notlarım

Yii2

DetailView widget Html value

[
‘label’ => $model->getAttributeLabel(“status”),
‘value’ => function ($model) {
if ($model->status== 1) {
return Html::a(Yii::t(‘app’, ‘AKTİF’), [‘Site/index’, ‘id’ => $model->id], [‘class’ => ‘btn btn-success’]);
} else {
return Html::a(Yii::t(‘app’, ‘PASİF’), [‘Site/index’, ‘id’ => $model->id], [‘class’ => ‘btn btn-danger’]);
}
},
‘format’ => ‘html’,
],

Devamı

Model Label:

$model->getAttributeLabel('name');

Dropdown:

echo $form->field($model, ’category’)->dropdownList([
1 => ’item 1’,
2 => ’item 2’
],
[’prompt’=>’Select Category’]
);

Yii2 – Paggination

View

use yii\widgets\LinkPager;
.....
echo LinkPager::widget([
'pagination' => $pagination,
]);


Controller:


use yii\data\Pagination;
....
$mediaData = FileManager::find()->where(['file_status' => 1]);
$count = $mediaData->count();
$pagination = new Pagination(['totalCount' => $count]);
....
return $this->renderPartial('files',
[
'pagination'=>$pagination,
]);

Yii2- Redirect Back

return $this->redirect(Yii::$app->request->referrer ?: Yii::$app->homeUrl);

Html::DropDownList For Yii2

echo Html::dropDownList('select_name', [1, 3, 5], ArrayHelper::map($content, 'ID', 'VALUE_DEG'), [
'multiple' => 'multiple',
'options' => ['value1' => ['disabled' => true, 'class' => 'yourClass', 'style'=> 'yourStyle'],
'value2' => ['label' => 'value 2'],
]

Yii2 GridView Action Button

[
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {update} {delete} {myButton}',
// the default buttons + your custom button
'buttons' => [
'myButton' => function (
$url,
$model,
$key
) { // render your custom button
return Html::a(
'',
$url,
[
'title' => 'Download',
'data-pjax' => '0',
]
);
},
],
],