Yii Admin Panel

Selamlar,

bende yeni yeni yii ile çalışmaya başladım ancak Admin panel yapımı konusunda pek döküman bulamadım. Bu konu hakkında bilgi verebilecek var mı ?

Teşekkürler,

Merhaba admin panel ile alakalı yii direk bir çözüm sunmaz fakat. Yii ile beraber gelen gii modülü size crud işlemleri için çok ayrıntılı yardımcı olur. Gii ile ürettiğiniz sayfalardan bir admin panel oluşturabilirsiniz. Gerçi neye yönelik bir admin panel olacağını bilmeden kesin konuşmak zor. Gii modülü ile ilgili ayrıntılı döküman Gii Module. Takıldığınız noktada sorabilirsiniz.

Teşekkürler cevap için,

söylediklerinizden admin paneli yii framework kullanmadan salt php ile geliştirmeliyim anlamını mı çıkarmalıyım.

Benim sözünü ettiğim panel normal bir sitenin paneli olacak, içeriğin duyuruların eklendiği bir panel.

Aslında ben bu konuda çok vakit kaybetmeden hazır yapılmış doküman veya tutorial bulabilir miyim diye buraya yazdım.

tekrar teşekkürler cevap için

Merhaba @mrex.

"söylediklerinizden admin paneli yii framework kullanmadan salt php ile geliştirmeliyim anlamını mı çıkarmalıyım."

sadece admin paneli için değil projenin hiç bir aşaması için bu şekilde düşünülmemeli.

admin paneli database e erişerek arayüzdeki değişikliklerin kolayca kontrol edilmesini sağlayan bir birim olarak düşünürsek, bu birimin nasıl çalışacağı kodlayanlar tarafından belirlenir.

"… panel normal bir sitenin paneli olacak…"; sizin projenizin normları bana göre farklı olduğu gibi benim projemin normlarıda size göre farklıdır, her projenin kendine özgü bir çalışma yapısı veya işleyiş farkı vardır.

örneğin bana göre kurumsal portal siteleri normal bir site, shopping farklı bir site, reklam amaçlı 8-10 sayfadan oluşan tanıtım sitesi basit bir site iken başkasına göre daha da farklı olabilir.

bu durumda kurumsal portal sitelerinin admin paneli ile, shopping cart admin panelinin aynı olması beklenemez.

Kısacası öncelikle bu birimin nasıl çalışıp ne işler yapması gerektiğini belirleyip ona göre kodlamalısınız.

daha sonra ihtiyaçlar doğrultusunda widget , extension veya module ler ile de geliştirmeye devam edebilirsiniz.

  • @Hasan Yıldız arkadaşımızın söyledikleri de kesinlikle size fayda sağlayacaktır.

iyi çalışmalar.

Cevaplar için teşekkürler,

Güzel anlatmışsınız ancak ben işin daha çok başındayım. o yüzden basic te olsa panel yapımı ile ilgili bir tutorial benim için çok faydalı olurdu. maalesef yii ile ilgili böyle bir doküman bulamadım.

size durumumu şöyle özetlersem hem benim için iyi olur hemde bundan sonra bu konuda bilgi arayan arkadaşlar buraya bakıp istifade edebilirler.

Şöyle ki;

www.siteadi.com/admin şeklinde bir giriş olacak ve burdan girince bir dashboard çıkacak, duyuru ekliycek falan. çok basit birşeyden bahsediyorum. ben sadece mantığı anlamaya çalışıyorum sonrası benim hayal gücüme kalmış.

şimdi bunu nasıl yapmalıyım? bir tane extension buldum buradan o extension protected dizinine /modules diye bir dizin oluşturup içine controller, model, view ne varsa oluşturmuş. main.php içinde de module array olarak tanımlamış. ben bunu kullanabilirim ancak benim amacım hazır kullanmak değil kendim yapmak istiyorum, o yüzden de mantığını öğrenmem lazım.

Tamam biraz daha temelden anlatmaya çalışalım o zaman. Öncelikli tavsiyem mvc yapısı hakkında türkçe kaynaklar okumanız çünkü yii nin de dahil olduğu birçok framework bu paradigmayı kullanır. Admin paneli olayına gelince. Yii framework size bir altyapı işleyiş biçimi sunuyor. Örneğin kurumsal web sitesini baz alarak anlatmaya devam edeyim. Sayfalarımız şuanlar olsun.

-Anasayfa -Ürünlerimiz -Galeri -İletişim

Şimdi anasayfamızda genel çok değişmeyen bilgiler olacağını varsayarak bu sayfayı view/index.php yi düzenleyerek yapıyoruz. Fakat .net teki masterpage kavramı gibi birde layouts klsörümüzde bir main.php miz var. Örnek olarak main.php yapısını aşağıda gösterdiğim gibi kabul edelim.


main.php

<-her sayfada bulunması gereken css js ve diğer bildirimler ->

<-her sayfada bulunacak sabit sayfa elemanları ->

<-content çağırımı ->

<-sayfanın alt bölgesinde tüm sayfalarda bulunacak genel içerikler(örneğin footer bölümü vs.) ->



bu noktada main.php nin içerisinde ki content in olduğu bölge çağrılacak sayfanın içeriği render edilerek basılacaktır.

Peki ya admin panel. Daha önce Yahya arkadaşımızın ve benim bahsettiğim gibi standart bir admin arayüzü yoktur olamaz fakat sizin direktiflerinizle bir admin sayfası ortaya çıkabilir.

Bunun içinde ürünlerimiz sayfasını ele alalım. Ürünlerimiz bilgilerini mysql de tutacağımızı varsayıyorum.

Mysql için yiinin gelişmiş crud(database e create read update delete işlemlerinin kısa adı) öperatörü vardır.

Peki bu crud generator bize neler sağlar. Biz yiinin kendi yapısını yada salt php kodları ile database den veri okuyup yazabiliriz fakat yii bize bunu hem bir bütün halinde bir çok hatadan arındırılmış hazırlayabilir hemde çok esnek kullanabiliriz.

Yine bir örnek yapı ile devam edelim.Database imizde tbl_urunler adında bir tablo oluşturalım.

bu tabloda da

id, urun_adi, urun_fotosu, urun_aciklamasi

alanları olsun. Şimdi eğer config dosyasından gii yi aktif etmiş isek gii ye giriş yapalım. Giriş yaptıktan sonra sol bölümde model genarator vardır. bu model generator bize database e bağlanıp oradaki tablo yapısına uygun model dosyasını üretecektir. Sonra model oluştu ise crud generator kısmına gelip az önce oluşturduğumuz model ismini vererek crud kodlarının oluşmasını sağlayacağız.

Buraya kadar yaptığımız işlemde yii bizim için

controller/UrunlerController.php

models/Urunler.php

views/admin.php

views/create.php

views/index.php

views/_form.php

views/_search.php

views/update.php

views/view.php

views/_view.php

dosyalarını üretti bu yapıyı bir admin paneli olarak kullanabilirsiniz. Örnek olarak ürünler linkine tıklandığında urunler/index linkine gönderirseniz ürünleriniz sayfası ekrana basılacak. Admin sayfası içinde controller ı içerisinde yetki tanımlamaları var hangi yetki düzeylerinin admin create gibi işlemlere yetkisi olacağını belirlerseniz yetkisiz işlemde yapılamaz. Kullanıcı girişi bölümünden admin olarak giriş yapıp urunler/admin e giderseniz size urunler ile alakalı tüm kayıtları listeler bunlarla ilgili silme düzeltme ve yeni kayıt ekleme kısımlarını gösterir bunları bir bütün halinde bir sayfada toplarsanız bu bir panel olmuş olur.

Çok uzun oldu fakat en temel sanırım böyle anlatılabilirdi. Başka kafanıza takılan kısım varsa yardımcı olalım.

Yii birkez kavradığınızda işlerinizi çok kolaylaştıracak bir framework, bıkmadan sabırla döküman okumanızı ve alıştırma yapmanızı tavsiye ederim. Şuan için türkçe desteği biraz zayıf bir framework tür fakat her geçen gün Türkiye de de kullanıcı kitlesi artmaktadır.

Teşekkürler Hasan, bilgiler için, takıldığım yerlerde tekrar sorarım.

benim amacım birazda burada yazılı materyal oluşsun, diğer ülkelerin forumlarında binlerce kayıt varken bizim ülkenin forumunda bir elin parmakları kadar maalesef.

Yii 'de önce components kısım UserInity dosyası var burası kullanıcılar girişinin kontrol yağıldığı yer. Sen ayrıca AdminInity diye bir yeni dosya olustur. bak benim dosyam su şekilde


<?php




class AdminIdentity extends CUserIdentity

{


	public function authenticate()

	{

		

		$model=Admins::model()->find('KULLANICI=:KUL and PAROLA=:PAR',array(':KUL'=>trim($this->username),':PAR'=>md5(trim($this->password))));

		

		

		

		if(count($model) < 1)

			$this->errorCode=self::ERROR_PASSWORD_INVALID;

		else{

			$this->setState('ADMIN',1);

			$this->setState('KULLANICI',$model->KULLANICI);

			$this->setState('YONETICI',$model->ADMIN);

			$this->errorCode=self::ERROR_NONE;

		}

		return !$this->errorCode;

	}

}

loginform modeli oluşturacaksın adminloginform diyelim bunada. diğer login form modeli gibi bakarak AdminIdentity dosyasını cağırıp username ve passwordu ilştir. AdminIdentity yukarıdaki gibi veritabanına çağır ve girilen değerleri kontrol et girilen değerler doğru ise Sessiona bir paremetre ekle


$this->setState('ADMIN',1);

bunun gibi daha sonra grudda oluşturdugun controller dosyasın gel accessRules() fonksyiona içine sadece admin yetkisi vermek istediğin kısmı sessiona atadığın veriyi çağırarak


'users'=>array('@'),

'expression'=>"$admin==1",

bu şekilde kontrol edebilirsin. * işareti koyarsan tüm kullanıcılar girer. örnek accses rules kontrolüm bu şekilde. Aşağıdaki view kısmını sen giriş izni * olarak ayarlayıp herkesin görmesini sağlıyaiblirsin. dikkat et admin ve delete kısmı yöneticinin kontrol edeceği kısım olabilir. ona göre düzenlemeleri yapabilirsin.


public function accessRules()

	{

		$admin=yii::app()->user->getState('ADMIN');

		return array(

			array('allow',  // allow all users to perform 'index' and 'view' actions

				'actions'=>array('view','create','update','admin','delete'),

				'users'=>array('@'),

				'expression'=>"$admin==1",

				


			),

			

			array('deny',  // deny all users

				'users'=>array('*'),

			),

			

		);

	}

Teşekkürler, çok faydalı bir yazı olmuş.

Google Oauth girişte sorun yaşıyoruz yardımcı olmanız mümkün mü @yahyasonmez