<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wddblog.com</title>
	<atom:link href="http://wddblog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://wddblog.com</link>
	<description>web design &#38; develop - web tasarımı ve yazılımı</description>
	<lastBuildDate>Fri, 17 Feb 2012 13:11:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Yii CActiveRecord &#8220;scopes&#8221; kullanımı</title>
		<link>http://wddblog.com/yii-framework/yii-cactiverecord-scopes-kullanimi/</link>
		<comments>http://wddblog.com/yii-framework/yii-cactiverecord-scopes-kullanimi/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 22:09:31 +0000</pubDate>
		<dc:creator>hamide yüce</dc:creator>
				<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://wddblog.com/?p=512</guid>
		<description><![CDATA[Yii "scopes" özelliği, yazacağınız where condition'larınızın tek bir php den yönetilebilir yapıyor ayrıca değişikliklerinizi rahatça yapma imkanı sunuyor.]]></description>
			<content:encoded><![CDATA[<p>Yii CActiveRecord model classında yer alan ve size verileriniz ile işlem yaparken içinizi rahatlatacak özelliği &#8220;<strong>scopes</strong>&#8220;.</p>
<p><strong>Scopes </strong>fonksiyonuna istediğiniz gibi isimlendirmeler vererek birden fazla <strong>condition </strong>tanımlıyorsunuz.</p>
<h2>Tanımlama:</h2>
<p>İlgili <strong>model </strong>classınız içerisine aşağıdaki gibi tanımlayabilirsiniz.</p>
<pre class="brush: php; title: ; notranslate">
public function scopes(){
  return array(
           'active_user'=&gt;array(
                     'condition'=&gt;' user_status = :status',
                     'params' =&gt; array('status' =&gt;  (string) ModuleName::UserActiveStatusCode)
                 ),
           'select_simple' =&gt; array(
                      'select' =&gt; 'user_id, user_name'
                ),
           'count_user' =&gt; array(
                      'select' =&gt; 'count(*)'
             )
 );
 }
</pre>
<p>* <strong>active_user</strong> tanımlamasında <span style="text-decoration: underline;">sadece</span> aktif olan üyeler içinde yapmanız gereken sorgunuz var ise kullanabilirsiniz.</p>
<p><strong>* select_simple</strong> tanımlamasında user tablosundaki<span style="text-decoration: underline;"> tüm alanların</span> sorgunuzda gelmesini <span style="text-decoration: underline;">istemiyor</span> olabilirsiniz, belli sütunları sürekli çağırıyorsanız kullanabilirsiniz.</p>
<p>* <strong>count_user </strong>kayıt sayısını almak istediğinizde kullanabilirsiniz. (Bu işlemi yapan birçok özellik mevcut ama bazen ihtiyacınız doğabilir.)</p>
<p>Bu tanımlamalar içerisinde <strong>order, limit</strong> gibi diğer  <strong>Criteria</strong> elemanlarını kullanabilirsiniz.</p>
<p>&nbsp;</p>
<h2>Örnek kullanım:</h2>
<p>Model oluşturacağınız <strong>controller</strong> classınız içerisinde aşağıdaki gibi kullanabilirsiniz. Aşağıdaki örnekte <strong>aktif </strong>kullanıcıların <strong>user_id, user_name </strong>bilgilerini getiren bir model oluşturalım.</p>
<pre class="brush: php; title: ; notranslate">
$activeUser = User::model()-&gt;active_user()-&gt;select_simple();
</pre>
<p>Yukarıda oluşturulan modeli dataProvider ilede kullanabilirsiniz.</p>
<pre class="brush: php; title: ; notranslate">
                $criteria=new CDbCriteria;
                $criteria-&gt;compare('user_gender','1');
                $userList = new CActiveDataProvider( $activeUser ,array(
			'criteria'=&gt;$criteria,
		));
</pre>
<p>Yii &#8220;scopes&#8221; özelliği, yazacağınız where condition&#8217;larınızı tek bir php den yönetilebilir yapıyor ayrıca değişikliklerinizi rahatça yapma imkanı sunuyor.</p>
]]></content:encoded>
			<wfw:commentRss>http://wddblog.com/yii-framework/yii-cactiverecord-scopes-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Kodlarınızı Hızlandırın, Yükünü Hafifletin</title>
		<link>http://wddblog.com/jquery/jquery-kodlarinizi-hizlandirin-yukunu-hafifletin/</link>
		<comments>http://wddblog.com/jquery/jquery-kodlarinizi-hizlandirin-yukunu-hafifletin/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 21:59:55 +0000</pubDate>
		<dc:creator>Ahmet Emin YÜCE</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Popüler]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://wddblog.com/?p=499</guid>
		<description><![CDATA[jQuery kütüphanesini web sayfalarımıza eklediğimizde uzmanlık derecesinde Javascript dilini bilmesek bile insanları etkileyecek akordiyon menüler, resim galerileri, çeşitli efektlerde slaytlar vs. yapabiliyoruz. Fakat bunları yaparken web sayfamızı açan kişinin web tarayıcısını ve bilgisayarını yormayacak şekilde hızlı ve etkin bir şekilde kod yazmak gerekiyor. jQuery kodlarımı nasıl hızlandırabilir ve optimize edebilirim? 1. Her zaman en yeni [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery kütüphanesini web sayfalarımıza eklediğimizde uzmanlık derecesinde Javascript dilini bilmesek bile insanları etkileyecek akordiyon menüler, resim galerileri, çeşitli efektlerde slaytlar vs. yapabiliyoruz.</p>
<p>Fakat bunları yaparken web sayfamızı açan kişinin web tarayıcısını ve bilgisayarını yormayacak şekilde hızlı ve etkin bir şekilde kod yazmak gerekiyor.</p>
<p><strong>jQuery kodlarımı nasıl hızlandırabilir ve optimize edebilirim?</strong></p>
<p><strong>1. Her zaman en yeni sürümü kullanın.</strong><br />
jQuery kütüphanesi her geçen gün daha etkin hale getirilmektedir. Önceki versiyonlarında daha yavaş ve dolaylı yollardan yapabildiği bir çok yöntem yenilenerek daha etkin ve hızlı hale getirilmektedir.</p>
<p><strong>2. jQuery kütüphanesini ve kodlarınızı minimize (minified) edilmiş veya paketlenmiş (packed) olarak kullanın.</strong><br />
Masaüstü ve dizüstü bilgisayarlar için hazırladığınız web sayfaları için kodlarınızı packleyerek daha az kb. ve hız sağlayabilirsiniz. Eğer Android ve iOs için de görüntülenecek sayfalar hazırlıyorsanız mutlaka minimize edilmiş kodlar kullanın. Paketlenmiş edilmiş kodların mobil cihazlarda çözümlenmesi vakit almakta ve sayfalarınızın açılma süresi gecikmekte veya sayfalarınız hiç açılmamaktadır.</p>
<p><strong>3.jQuery kütüphanesini ve kodlarınızı sayfa sonuna ekleyin.</strong><br />
Sayfalarınızdaki Html ve CSS kodlarınız yüklendikten sonra Javascript kütüphanesinin ve kodlarının yüklenmesi sayfa açılma hızını ciddi oranda artırmaktadır.</p>
<p><strong>4. Sayfalarınız yüklendiğinde çalışan ajax medotlarından kaçının.</strong><br />
Web sayfanız ilk açıldığında yapılacak bir ajax çağrısı sayfa açılışını geciktirmektedir. Ajax metodlarını sayfa açılırken kullanmak yerine zaten yüklenmiş olan bir sayfada belli bir alanı yenilemek için kullanmanız etkinliği ve hızı artıracaktır.</p>
<p><strong>5. Kodlarınızı her sayfaya özel hale getirerek ayırın.</strong><br />
Her açılan sayfada o sayfa için kullanılmayacak kodları yüklemeyin. Kodlarınızı özelliklerine göre &#8220;slider.js, menu.js, gallery.js&#8221; gibi dosyalara ayırarak kullanıldıkları sayfalarda yüklenmesini sağlayın.</p>
<p><strong>6. Çok fazla sayıda .bind() veya .live() metodlarını kullanmayın.</strong><br />
Bir sayfa yüklendiğinde arka planda çok fazla sayıda (20 adet veya fazlası) hazır halde çalışmak için bekleyen .bind() veya .live() ile atanmış fonksiyonları kullanmayın. Kullanmaya çok ihtiyacınız var ise mümkün olan bazılarını onClick=&#8221;javascript:fonksiyonAdi();&#8221; şeklinde çevirmeye çalışın. Yoksa web tarayıcınızın yavaşladığını göreceksiniz.</p>
<p><strong>7. Keşleme (caching) kullanın.</strong><br />
Bir Html tagini kodlarınız içerisinde birden fazla kullanacağınız zaman onu bir değişken ile tanımlayın. Örneğin &#8220;butonum&#8221; class&#8217;ı verilmiş bir &#8220;a&#8221; taginiz var ve kodlarınız içerisinde birden fazla kullanmak istiyorsunuz. Her seferinde &#8220;$(&#8216;.butonum&#8217;)&#8221; şeklinde çağırmak yerine &#8220;var butonum = $(&#8216;.butonum&#8217;);&#8221; şeklinde bir değişkene atayarak &#8220;butonum.hide(); butonum.fadeIn();&#8221; gibi çağırarak kullanmak kodlarınızın hızını ve etkinliğini artıracaktır.</p>
<p><strong>8. Keşleme kullanırken id kullanmak yerine daha çok class kullanın. (scope your selections)</strong><br />
&#8220;var butonum = $(&#8216;.butonum&#8217;);&#8221; şeklinde bir keşleme yaptınız. &#8220;butonum&#8221; classı içerisinde bir spana ulaşmak istiyoruz. &#8220;$(&#8216;span&#8217;, butonum);&#8221; bu şekilde kullanmak daha etkin olacaktır.</p>
<p><strong>9. Daha kısa class isimlerini kullanın.</strong><br />
$(&#8216;.divim .birbaskadivim .butonum&#8217;) şeklinde üç kademeli bir class yerine &#8220;$(&#8216;.butonum&#8217;)&#8221; şeklinde kullanım daha hızlı erişim sağlar.</p>
<p><strong>10. Elementleri çağırırken id, tag, class (scope selection), class sırlamasına dikkat edin.</strong><br />
Bir elementi çağırırken önce $(&#8216;#id&#8217;) ile çağırın. Daha sonra $(&#8216;div&#8217;) şeklinde taglere direk ulaşarak çağırmaya çalışın. En son olarak keşleme yaptıysanız $(&#8216;.class&#8217;, butonum) ile, keşleme yapmadıysanız $(&#8216;.class&#8217;) kullanın.</p>
<p><strong>11. .animate() ile verilen efektleri sırayla çalıştırın.</strong><br />
Bir diviniz var ve bunun boyutunu ve rengini değiştirmek istiyorunuz. Bu iki işlemi &#8220;.animate()&#8221; içerisinde aynı anda koymak yerine .animate({} , callback()) kullanarak sırayla yapmaya çalışın. Yani önce boyutunu sonra rengini değiştirin. İkisini veya daha fazlasını aynı anda yapmaya çalıştığınızda web tarayıcılarının çoğu bu efektleri takılarak veya eksik yapmaya başlarlar. Yine bir .animate() çalışırken başka bir tanesinin aynı anda çalışmamasına dikkat edin.</p>
<p><strong>12. jQuery ile çok sayıda CSS stil tanımlaması yapmayın.</strong><br />
&#8220;$(&#8216;div&#8217;).css({&#8216;color&#8217; : &#8216;#ff0000&#8242; , &#8216;font-size&#8217; : &#8217;16px&#8217;, &#8216;width&#8217; : &#8217;200px&#8217; , &#8216;position&#8217; : &#8216;absolute&#8217;});&#8221; şeklinde stil vermek yerine bunları bir CSS ile class haline getirip  &#8220;$(&#8216;div&#8217;).addClass(&#8216;stilim&#8217;);&#8221; şeklinde kullanmak daha etkin olacaktır.</p>
<p><strong>13. İstediğiniz anda jQuery kullanmadan Javascript&#8217;e dönmekten kaçınmayın.</strong><br />
jQuery ile kodlamanıza devam ederken sadece belli bölgeler için daha kısa bir şekilde Javascript yazabiliyorsanız bunu yapmaktan kaçınmayın. jQuery kütüphanesini eklediniz diye her şeyi onunla yapmanız gerekmiyor. Bazı noktalarda sadece Javascript kullanmak daha hızlı ve etkin olabilmektedir. İkisini birden harmanlamak daha etkin olabilir.</p>
<p><strong>14. DOM Manipulation yapmaktan kaçının.</strong><br />
Sayfanızda &#8220;.html()&#8221;, &#8220;.append()&#8221; gibi yöntemlerle örneğin &#8220;table&#8221; ve içerisindeki bütün &#8220;tr&#8221; ve &#8220;td&#8221; leri eklemeye çalışmak bu sayfanızı yavaşlatacaktır. Html&#8217;lerinizi mümkün olduğunca sayfa içerisine Html olarak yazın. Üzerlerine yapılacak ufak değişiklikleri jQuery ile yapmaya çalışın. Ya da ajax kullanın. Büyük çapta Html bloklarını ekleme ve çıkarma işlemini jQuery ile yapmaya çalışmayın.</p>
<p><strong>15. İç içe .bind() veya .live() tanımladığınızda .unbind() ve .die() kullanmayı unutmayın.</strong><br />
$(&#8216;a&#8217;).bind(); ile bir butona görev tanımladınız. Bu butona tıklandığında başka bir html tagine bir .bind() daha yapılmasını istediniz. Buradaki işlem sırasında oluşturduğunuz ikinci .bind() işlemini, gerçekleştiğinde .unbind() yapmayı unutmayınız. Yoksa ilk baştaki butona her tıkladığınızda kapatılmamış .bind() üzerine tıklama sayısı kadar .bind() atamaya devam edeceksiniz ki bu da web tarayıcısının belli bir yerden sonra yanıt veremez hale gelmesine neden olacaktır.</p>
<p><strong>16. return false kullanın.</strong><br />
Bir &#8220;a&#8221; tagine &#8220;.bind(&#8216;click&#8217;)&#8221; veya &#8220;.live(&#8216;click&#8217;)&#8221; ile verilen görevlerde kodlarınızı yazdığınız fonksiyonun son satırına &#8220;return false&#8221; eklemeyi unutmayın. Örneğin, $(&#8216;a&#8217;).bind(&#8216;click&#8217; , function(){$(this).hide();return false}); gibi&#8230; Uzun bir sayfada alt kısımlarda iken görev verdiğiniz &#8220;a&#8221; tagine tıklandığında kullanıcı ekranın üst kısmına atlayan sayfa karşısında (href=&#8221;#top&#8221; şeklinde link verdiğimiz gibi) hazırladığınız efekt veya işlemi göremeden neye uğradığını anlamayacaktır.</p>
<p><strong>17. 1.$(document).ready(); yerine $(function(){}); kullanın.</strong><br />
Sayfa yüklenirken yapacağınız işlemleri &#8220;$(function(){});&#8221; içerisinde kullanarak çağırın.</p>
<p><strong>18. jguery.com sitesini ve dökümantasyonunu sürekli takip ederek yenilikleri takip edin.</strong><br />
Örneğin &#8220;.live(), .delegate(), .on(), .off()&#8221; gibi eklenen yeni özellikleri takip ederek daha sık kullanmaya çalışın.</p>
]]></content:encoded>
			<wfw:commentRss>http://wddblog.com/jquery/jquery-kodlarinizi-hizlandirin-yukunu-hafifletin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Html5 ve Internet Explorer</title>
		<link>http://wddblog.com/html/html5-ve-internet-explorer/</link>
		<comments>http://wddblog.com/html/html5-ve-internet-explorer/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 20:10:21 +0000</pubDate>
		<dc:creator>Ahmet Emin YÜCE</dc:creator>
				<category><![CDATA[Html]]></category>
		<category><![CDATA[Html5]]></category>
		<category><![CDATA[Popüler]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://wddblog.com/?p=487</guid>
		<description><![CDATA[Html5 kullanarak web sitelerinizi tasarlamak istiyorsunuz. Fakat Internet Explorer 9 öncesi tarayıcılar ile ziyaret edildiğinde sayfalarınızın doğru şekilde görüntülenmesini de istiyorsunuz. Bu tarayıcılar için ayrı Html sayfalar mı oluşturacaksınız? Tabi ki hayır. Bunun için bir çözüm bulunmuş. Hem de çok basit. Html5 tagleri nelerdir? article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section [...]]]></description>
			<content:encoded><![CDATA[<p>Html5 kullanarak web sitelerinizi tasarlamak istiyorsunuz. Fakat Internet Explorer 9 öncesi tarayıcılar ile ziyaret edildiğinde sayfalarınızın doğru şekilde görüntülenmesini de istiyorsunuz. Bu tarayıcılar için ayrı Html sayfalar mı oluşturacaksınız? Tabi ki hayır. Bunun için bir çözüm bulunmuş. Hem de çok basit.</p>
<p><strong>Html5 tagleri nelerdir?</strong><br />
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section</p>
<p><strong>Bu tagler yeni ve güncel tarayıcılarda sorunsuz çalışıyor. Internet Explorer 9 öncesi tarayıcılarda bu tagleri kullanabilecek miyiz?</strong></p>
<p>Örneğin aşağıdaki gibi section tagine CSS kullanarak bazı görsel özellikler eklemek istiyorsunuz :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;section style=&quot;color:#ff0000;font-size:20px;&quot;&gt;
Merhaba Html5!
&lt;/section&gt;
</pre>
<p>Yeni tarayıcılarda bu section tagi içerisindeki &#8220;Merhaba Html5!&#8221; yazısı 20px boyutunda kırmızı renkte görüntülenecektir. Fakat IE9 öncesi tarayıcılarda sanki hiç CSS yazmamışız gibi görüntüenecektir.</p>
<p>Bunu çözmek için web sayfalarınızın meta tagleri arasına şu satırı eklemeniz yeterli olacaktır. Gayet basit ve hızlı!</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!--[if lt IE 9]&gt; &lt;script src=&quot;//html5shiv.googlecode.com/svn/trunk/html5.js&quot;&gt;&lt;/script&gt; &lt;![endif]--&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wddblog.com/html/html5-ve-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Yii framework CArrayDataProvider kullanımı</title>
		<link>http://wddblog.com/yii-framework/yii-framework-carraydataprovider-kullanimi/</link>
		<comments>http://wddblog.com/yii-framework/yii-framework-carraydataprovider-kullanimi/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 10:34:16 +0000</pubDate>
		<dc:creator>hamide yüce</dc:creator>
				<category><![CDATA[Popüler]]></category>
		<category><![CDATA[Yii framework]]></category>
		<category><![CDATA[CArrayDataProvider]]></category>
		<category><![CDATA[CGridView]]></category>

		<guid isPermaLink="false">http://wddblog.com/?p=477</guid>
		<description><![CDATA[Bazen projelerimizde veritabanından değilde JSON ya da XML dosyalarından verileri çekerek listeleme ihtiyacımız doğabiliyor. Bu kayıtlarımızın gösteriminde sayfalama yapmak ise olsa güzel olur dediğimiz bir durum oluyor. Yii Framework bunuda bizim için düşünmüş ve hazırlamış. &#8220;CArrayDataProvider&#8221;  ile JSON ya da XML formatındaki kayıtlarımızı ARRAY tipine çevirerek sayfalama gösterimini mümkün hale getirebiliyoruz. Örnek kullanım: [Controller] SiteController.php [...]]]></description>
			<content:encoded><![CDATA[<p>Bazen projelerimizde veritabanından değilde JSON ya da XML dosyalarından verileri çekerek listeleme ihtiyacımız doğabiliyor. Bu kayıtlarımızın gösteriminde sayfalama yapmak ise olsa güzel olur dediğimiz bir durum oluyor.</p>
<p>Yii Framework bunuda bizim için düşünmüş ve hazırlamış. &#8220;<strong>CArrayDataProvider</strong>&#8221;  ile JSON ya da XML formatındaki kayıtlarımızı ARRAY tipine çevirerek sayfalama gösterimini mümkün hale getirebiliyoruz. Örnek kullanım:</p>
<p>[<strong>Controller</strong>] SiteController.php</p>
<pre class="brush: php; title: ; notranslate">
public function actionListe(){

// $fileurl içerisine JSON formatındaki kayıtlarımız yer alsın

$data = file_get_contents($fileurl);

// bu fonksiyon ile JSON datalar ARRAY formatına dönüştürüldü, true parametresini göndermediğinizde OBJECT olarak kayıtlarınız gelir
$dataArray = CJSON::decode($data, true);

$dataList=new CArrayDataProvider($dataArray, array(
                            'keyField'=&gt;'listID', // JSON dosyanızdaki her bir kayda ait unique key olmazsa hata oluşur
                            'pagination'=&gt;array(
                            'pageSize'=&gt;10,
                            ),
                        ));
$this-&gt;render('liste',array('dataList' =&gt; $dataList));
}
</pre>
<p><strong>keyField</strong> parametresine dikkat etmelisiniz yoksa hata sayfası ile karşılaşırsınız. ARRAY nesnenizde unique bir değeriniz mutlaka olmalı.<br />
<strong>CArrayDataProvider</strong> &#8216;a ait parametrelerin dökümantasyonuna <a title="CArrayDataProvider" href="http://www.yiiframework.com/doc/api/1.1/CArrayDataProvider" target="_blank">buradan</a> erişebilirsiniz.</p>
<p>[<strong>view</strong>] liste.php</p>
<pre class="brush: php; title: ; notranslate">

...
$this-&gt;widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=&gt;$dataList,
// ARRAY nesnenizdeki sutunlardan istediğinizi gösterebilirsiniz. yazmassanız Array'e ait tüm sutunlar listelenecektir
    'columns'=&gt;array(
        'title',
        'content',
        'time')
    )
);
...
</pre>
<p><strong>zii.widgets.grid.CGridView</strong> ek özellikleri ile görünümünü istediğiniz şekilde değiştirebilirsiniz. Alabileceği parametrelerin dökümantasyonuna <a title="CGridView" href="http://www.yiiframework.com/doc/api/1.1/CGridView" target="_blank">buradan</a> erişebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://wddblog.com/yii-framework/yii-framework-carraydataprovider-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii CUploadedFile kullanımı ve Image upload extensions</title>
		<link>http://wddblog.com/yii-framework/yii-image-upload-extensions/</link>
		<comments>http://wddblog.com/yii-framework/yii-image-upload-extensions/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 20:55:12 +0000</pubDate>
		<dc:creator>hamide yüce</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Popüler]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://wddblog.com/?p=458</guid>
		<description><![CDATA[Yii framework de image upload, resize, crop gibi işlemleri için kullanabileceğiniz &#8220;image&#8221; eklentisi bulunmaktadır. Eklentiyi buradan (image_0_2.zip) indirebilirsiniz. İndirdiğiniz dosyada bulunan helpers klasörünü www/projeadi/protected dizini içerisine kopyalayın. Diğer image klasörünü ise www/projeadi/protected/extensions klasörü içine kopyalayın. image eklentisini kullanabilmek için www/projeadi/protected/config/main.php dosyasındaki import kısmına &#8216;application.helpers.*&#8217; eklemeniz gereklidir. Yukarıdaki kodu import&#8217;a ekledikten sonra yine main.php içerisinde kullandığınız kütüphaneyi belirtiyorsunuz. (GD ya da ImageMagic) Eklentiyi artık kullanabilirsiniz. Kullanım örnekleri: [...]]]></description>
			<content:encoded><![CDATA[<p>Yii framework de image upload, resize, crop gibi işlemleri için kullanabileceğiniz &#8220;image&#8221; eklentisi bulunmaktadır. Eklentiyi <a title="yii image extensions" href="http://www.yiiframework.com/extension/image/" target="_blank">buradan</a> (image_0_2.zip) indirebilirsiniz.</p>
<p>İndirdiğiniz dosyada bulunan <strong>helpers </strong>klasörünü <strong>www/projeadi/protected </strong>dizini içerisine kopyalayın. Diğer <strong>image </strong>klasörünü ise <strong>www/projeadi/protected/extensions </strong>klasörü içine kopyalayın.</p>
<p><strong>image</strong> eklentisini kullanabilmek için <strong>www/projeadi/protected/config/main.php </strong>dosyasındaki <strong>import</strong> kısmına <strong>&#8216;application.helpers.*&#8217;</strong> eklemeniz gereklidir.</p>
<pre class="brush: php; title: ; notranslate">
'import' =&gt; array(
'application.models.*',
'application.components.*',
'application.modules.*',
'application.ext.*',
'application.helpers.*',
),
</pre>
<p>Yukarıdaki kodu <strong>import&#8217;a</strong> ekledikten sonra yine <strong>main.php </strong>içerisinde kullandığınız <strong>kütüphaneyi</strong> belirtiyorsunuz.<strong> (GD ya da ImageMagic)</strong></p>
<pre class="brush: php; title: ; notranslate">
...
// application components
 'components' =&gt; array(
'image'=&gt;array(
'class'=&gt;'application.extensions.image.CImageComponent',
// GD or ImageMagick
'driver'=&gt;'GD',
// ImageMagick setup path
// 'params'=&gt;array('directory'=&gt;'/opt/local/bin'),
 ),
 'user' =&gt; array(
// enable cookie-based authentication
'allowAutoLogin' =&gt; true,
'loginUrl' =&gt; array('/user/login'),
 ),
...
</pre>
<p>Eklentiyi artık kullanabilirsiniz. Kullanım örnekleri:</p>
<p><strong>[view]</strong> form.php</p>
<pre class="brush: php; title: ; notranslate">
&lt;!--?php if(Yii::app()---&gt;user-&gt;hasFlash('uploadfilesuccess')){
      echo Yii::app()-&gt;user-&gt;getFlash('uploadfilesuccess');
}else{
      if(Yii::app()-&gt;user-&gt;hasFlash('uploadfileerror')){
          echo Yii::app()-&gt;user-&gt;getFlash('uploadfilerror');
      }
    echo CHtml::form('', 'post', array('enctype' =&gt; 'multipart/form-data'));
    echo CHtml::fileField('file', '', array('id' =&gt; 'file'));
    echo CHtml::submitButton('Yükle');
    echo CHtml::endForm();

}
?&gt;
</pre>
<p><strong>[controller]</strong>SiteController.php</p>
<pre class="brush: php; title: ; notranslate">
public function actionForm() {
      if (isset($_FILES['file'])) {
           $file = CUploadedFile::getInstanceByName('file'); // dosya yükleme
           if($file-&gt;saveAs('img/upload/path/imagename.jpg')) // dosya isimlendirmesini siz yapıyorsanız
           {

            $image = Yii::app()-&gt;image-&gt;load('img/upload/path/imagename.jpg');
//orjinal resmi 320X320 ve 75 kalitede kaydediyoruz
            $image-&gt;resize(320, 320)-&gt;quality(75)-&gt;sharpen(20);

            $image-&gt;save();

// orjinal resimden thumb resim oluşturuyoruz ayrı bir yere kaydediyoruz
            $image-&gt;resize(50, 50)-&gt;quality(85)-&gt;sharpen(20);
            $image-&gt;save('img/upload/path/th/imagename.jpg');

            Yii::app()-&gt;user-&gt;setFlash('uploadfilesuccess', 'Dosya yüklendi');

           }else
                Yii::app()-&gt;user-&gt;setFlash('uploadfileerror', 'Dosya yüklenirken hata oluştu. Tekrar deneyin.');
      }
      $this-&gt;render('form);
  }
</pre>
<h2>CUploadedFile</h2>
<p>Yukarıdaki örnekte <strong>model</strong> <span style="text-decoration: underline;">olmayan</span> bir yükleme formu var ve bunun için<strong> CUploadedFile::getInstanceByName(&#8216;file&#8217;) </strong>olarak yükleme fonksiyonunu kullandık. Model kullanımında file upload işlemi için <strong>getInstance()</strong> kullanılmaktadır. Örnek kullanım:<br />
<strong>[view]</strong>form.php</p>
<pre class="brush: php; title: ; notranslate">

...
echo CHtml::form('','post',array('enctype'=&gt;'multipart/form-data')); 
echo CHtml::activeFileField($model, 'file'); 
echo CHtml::endForm();
...
</pre>
<p>Modelde dosyayı file sisteme kaydetmek için,</p>
<pre class="brush: php; title: ; notranslate">
        $model=new Images;
        if(isset($_POST['Images']))
        {
            $model-&gt;attributes=$_POST['Images'];
            $model-&gt;file = CUploadedFile::getInstance($model,'file');
            if($model-&gt;save())
            {
                $model-&gt;file-&gt;saveAs('img/upload/path/imagename.jpg');
                $image = Yii::app()-&gt;image-&gt;load('img/upload/path/imagename.jpg');
//orjinal resmi 320X320 ve 75 kalitede kaydediyoruz
                $image-&gt;resize(320, 320)-&gt;quality(75)-&gt;sharpen(20);

                $image-&gt;save();

// orjinal resimden thumb resim oluşturuyoruz ayrı bir yere kaydediyoruz
               $image-&gt;resize(50, 50)-&gt;quality(85)-&gt;sharpen(20);
               $image-&gt;save('img/upload/path/th/imagename.jpg');
            }
        }
        $this-&gt;render('form', array('model'=&gt;$model));
</pre>
<p>Model classında file tipi, boyutu gibi kısıtlamaları yönetebilirsiniz.<br />
<strong>[model] Images.php</strong></p>
<pre class="brush: php; title: ; notranslate">
public $file;
public function rules()
    {
        return array(
            array('file', 'file', 'types'=&gt;'jpg, gif, png','maxSize'=&gt;1024 * 1024 * 3) // 3MB
        );
    }
</pre>
<h2>Images Eklentisi</h2>
<p>Resimlere <strong>resize</strong> işlemi sırasında sünme sorunlarını çözmek için,</p>
<pre class="brush: php; title: ; notranslate">
// 400x200 tam boyutta biçimlendirir, sünme olabilir
$this-&gt;image-&gt;resize(400, 200, Image::NONE)

// resimin yüksekliğine göre genişliğini ayarlar yükseklik 200 olduğunda genişlik 360 olabilir.
$this-&gt;image-&gt;resize(400, 200, Image::HEIGHT)

// resimi sündürmeden uygun alacağı boyutlara göre kırpar, varsayılan ayarıdır
$this-&gt;image-&gt;resize(400,200,Image::AUTO)
</pre>
<p>Resimlerde üstten, sağdan ,soldan hizalama yaptırarak kırpma işlemi,</p>
<pre class="brush: php; title: ; notranslate">
$this-&gt;image-&gt;crop(400, 350 , 'top' , 'left');
</pre>
<p>Resimlerde açı değerine göre döndürme işlemi,</p>
<pre class="brush: php; title: ; notranslate">
$this-&gt;image-&gt;rotate(-90);
</pre>
<p>Resimleri boyutlandırırken kalitelerini değiştirme işlemi,</p>
<pre class="brush: php; title: ; notranslate">
$this-&gt;image-&gt;resize(100,100)-&gt;quality(75);
</pre>
<p>Eklentinin dökümantasyonuna <a title="image dökümandasyonu" href="http://docs.kohanaphp.com/libraries/image" target="_blank">buradan</a> ulaşabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://wddblog.com/yii-framework/yii-image-upload-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii framework jQuery UI AutoComplete widget kullanımı</title>
		<link>http://wddblog.com/yii-framework/yii-framework-jquery-ui-autocomplete-widget-kullanimi/</link>
		<comments>http://wddblog.com/yii-framework/yii-framework-jquery-ui-autocomplete-widget-kullanimi/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 19:37:48 +0000</pubDate>
		<dc:creator>hamide yüce</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Popüler]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://wddblog.com/?p=442</guid>
		<description><![CDATA[Yii framework de jQuery UI AutoComplete eklentisini kullanabilmeniz için CJuiAutoComplete widget ı bulunur. ]]></description>
			<content:encoded><![CDATA[<p>Yii framework de jQuery UI AutoComplete eklentisini kullanabilmeniz için CJuiAutoComplete widget ı bulunur. Javascript diziden, JSON dosyasından, PHP dosyasından veya oluşturduğunuz Controller clasından verileri gösterebilirsiniz. <a title="jQuery UI AutoComplate" href="http://jqueryui.com/demos/autocomplete/" target="_blank">JQuery UI AutoComplete</a> options ve events fonksiyonlarını Yii CJuiAutoComplete   widget ı ile kullanma imkanınız vardır. Örnek kullanım:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

// indisler araçlarınızın detay sayfasının linki olsun, değerler ise kullanıcıların arama yapacakları kelimeler olsun

$arabalar = array(
array(&quot;value&quot; =&gt; &quot;opel-corsa&quot;, &quot;label&quot; =&gt; &quot;Opel Corsa&quot;)
array(&quot;value&quot; =&gt;&quot;opel-vectra&quot;, &quot;label&quot; =&gt; &quot;Opel Vectra&quot;)
array(&quot;value&quot; =&gt; &quot;ford-focus&quot;, &quot;label&quot; =&gt; &quot;Ford Focus&quot; ));

$this-&gt;widget('zii.widgets.jui.CJuiAutoComplete', array(
'name'=&gt;'hizli_arac_modeli_ara',
'source'=&gt; json_encode($arabalar), // json dosyası , php dosyası url yazılabilir
//'source' =&gt; $this-&gt;createUrl('test/json'),
'value' =&gt; 'Araba ara',
'options'=&gt;array(
'minLength'=&gt;'0',
'autoFocus' =&gt; 'true',
'select' =&gt; 'js:function( event, ui ) {if(ui.item.value) window.location.href=&quot;/arabalar/&quot;+ui.item.value;}'
),
'htmlOptions'=&gt;array(
'class'=&gt;'arama' //arama text input classı
),
));

?&gt;

&lt;script type=&quot;text/javascript&quot;&gt;

/*araba arama : kullanıcı inputa tıkladığında arama listesi açılması ve inputtan ayrıldığında içine &quot;Araba ara&quot; yazısını silmesi için*/
$('#hizli_arac_modeli_ara').live('focus',function(){
if ($(this).val() == &quot;Araba ara&quot;)  $(this).val('');
$(this).autocomplete('search', 'a');
});

/*kullanıcı inputtan ayrıldığında içine yeniden &quot;Araba ara&quot; yazması için*/

$('#hizli_arac_modeli_ara').live('blur',function(){
$(this).val('Araba ara');

});

/* kullanıcı inputta yazarken tamam aradığım bu diyerek enter tuşuna basarsa yönlendirmek için*/

$('#hizli_arac_modeli_ara').live('keyup',function(e){
if(e.keyCode =='13') { window.location.href ='/arabalar/'+$(this).val();}
});

&lt;/script&gt;
</pre>
<p>Kullanım örneği için <a title="piyasa.com hisse arama" href="http://piyasa.com" target="_blank">piyasa.com &#8220;hisse arama&#8221;</a> kısmına bakabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://wddblog.com/yii-framework/yii-framework-jquery-ui-autocomplete-widget-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>yii model de findByPk, findAll, findByAttributes, dataprovider kullanımı</title>
		<link>http://wddblog.com/yii-framework/yii-model-de-findbypk-findall-findbyattributes-dataprovider-kullanimi/</link>
		<comments>http://wddblog.com/yii-framework/yii-model-de-findbypk-findall-findbyattributes-dataprovider-kullanimi/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 20:52:05 +0000</pubDate>
		<dc:creator>hamide yüce</dc:creator>
				<category><![CDATA[Popüler]]></category>
		<category><![CDATA[Yii framework]]></category>
		<category><![CDATA[yii dataProvider]]></category>
		<category><![CDATA[yii findAll]]></category>
		<category><![CDATA[yii findByAttributes]]></category>
		<category><![CDATA[yii gridview]]></category>
		<category><![CDATA[yii listData]]></category>

		<guid isPermaLink="false">http://wddblog.com/?p=411</guid>
		<description><![CDATA[yii modellerinde findByPk, findAll, findByAttributes, dataProvider ve CGridView kullanımı]]></description>
			<content:encoded><![CDATA[<p>Yii de oluşturduğunuz modellerin, controller ve view dosyalarında en çok kullandığımız özelliklerden bahsedelim.</p>
<p>1- primary key ile kayıt detayını getirmek &#8211; findByPk</p>
<p>2- tablonun herhangi bir sütun/sütunları na göre kayıt/kayıtlar getirmek &#8211; findAll, findByAttributes</p>
<p>3- where koşuluna göre kayıt/kayıtlar getirmek ve sayfalama yapmak &#8211; dataprovider</p>
<p>4-  zii.widgets.grid.CGridView ile kayıtları listelemek</p>
<h5>1- primary key ile kayıt detayını getirmek &#8211; findByPk</h5>
<p>haberModel.php modelinde haber primary key e göre tek bir kaydın bilgilerini alacaksınız. Örnek kullanım :</p>
<p><span style="color: #999999;"><strong>haberModel.php</strong></span></p>
<pre class="brush: php; title: ; notranslate">
public function loadModel($haberid) {

$model = $this-&gt;findByPk($haberid);

if ($model === null)
throw new CHttpException(404, 'Kayıt bulunamadı!');
return $model;

}
</pre>
<p><span style="color: #999999;"><strong>siteController.php<br />
</strong></span></p>
<pre class="brush: php; title: ; notranslate">
// haber detay view action /view/site/haberdetay.php
public function actionHaberdetay() {

if(isset($_GET['haberid'])){
$model = haberModel::model()-&gt;loadModel($_GET['haberid']);
// eğer kayıt bulunamazsa loadModelde 404 e düşecek
$this-&gt;render('haberdetay', array('modelHaber'=&gt;$model));
}

}
</pre>
<p>throw new CHttpException(404, &#8216;Kayıt bulunamadı!&#8217;); satırı site/error.php , siteController içindeki actionError() fonksiyonunu tetiklemektedir.</p>
<p><strong>/view/site/haberdetay.php</strong></p>
<pre class="brush: php; title: ; notranslate">
..&lt;/pre&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;div class=&quot;icerik&quot;&gt;Tarih :haber_tarihi);?&gt;
haber_icerik);?&gt;&lt;/div&gt;
&lt;pre&gt;
</pre>
<h5>2- tablonun herhangi bir sütun/sütunları na göre kayıt/kayıtlar getirmek &#8211; findAll, findByAttributes</h5>
<p>Tablonuzda herhangi bir sütundaki belli değerleri almak istiyorsunuz. Örneğin bugün eklenen haberleri getiren fonksiyonu yazalım.</p>
<p>- <strong>findAll() ile;</strong><br />
<strong>siteController.php</strong></p>
<pre class="brush: php; title: ; notranslate">
public function actionHaberbugun(){

// ufaktan criteria kullanımından da bahsetmiş olduk

$where = new CDbCriteria;
$where-&gt;compare('haber_tarihi', date('Y-m-d'));
$where-&gt;select = 't.haber_id,t.haber_baslik';

$haberlistesi = HaberModel::model()-&gt;findAll($where);

$this-&gt;render('haberbugun', array('haberlistesi'=&gt; $haberlistesi));

}
</pre>
<p>Buradaki <strong>$haberlistesi</strong> bir <span style="text-decoration: underline;"><strong>dataProvider</strong></span> nesnesi olarak gelir, view dosyanıza <span style="color: #ff0000;"><strong>&#8220;zii.widgets.grid.CGridView&#8221;</strong></span> modülünü kullarak listeletebilirsiniz.(Kullanımı makalenin sonunda vardır)<br />
İsterseniz gelen kayıtları bir diziye atayabilirsiniz.</p>
<pre class="brush: php; title: ; notranslate">
//key : haber_id , value : haber_baslik
$haberArray = CHtml::listData($haberlistesi, 'haber_id','haber_baslik');
</pre>
<p><strong>- findByAttributes() ile;</strong><br />
criteria kullanmadan örnek<br />
<strong>siteController.php</strong></p>
<pre class="brush: php; title: ; notranslate">
public function actionHaberbugun(){

$haberlistesi = HaberModel::model()-&gt;findByAttributes(array('haber_tarihi' =&gt; date('Y-m-d')));

$this-&gt;render('haberbugun', array('haberlistesi'=&gt; $haberlistesi));

}
</pre>
<p><strong>findByAttributes</strong> fonksiyonunda ilk değerde eşleşme bire birdir. Like,büyüktür,limit,join,having,group  vs işlemleri için dataProvider kullanmanız daha uygun olur.   findByAttributes de array içerisine birden fazla sütun adı ve değeri yazabilirsiniz. Ayrıca criteria nesnesinide kullanabilir ya da sql yazabilirsiniz. Örnek olarak:</p>
<pre class="brush: php; title: ; notranslate">
public function actionHaberbugun(){

// 1.YÖNTEM SQL : deneme kelimesi içeren bugün eklenen haberler vs.
$haberlistesi = HaberModel::model()-&gt;findByAttributes(array('haber_tarihi' =&gt; date('Y-m-d')),&quot;haber_baslik like '%DENEME%'&quot;);
// 2. YÖNTEM CRITERIA
$where = new CDbCriteria;
$where-&gt;compare('haber_baslik', 'DENEME',true); // true like kullanmasını söyler
$haberlistesi = haberModel::model()-&gt;findByAttributes(array('haber_tarihi' =&gt; date('Y-m-d')),$where);
$this-&gt;render('haberbugun', array('haberlistesi'=&gt; $haberlistesi));

}
</pre>
<p>Görüldüğü gibi<strong> findByAttributes </strong>kullanımı yazılımcının yazım şekline göre değişir.</p>
<h5>3- where koşuluna göre kayıt/kayıtlar getirmek  ve relation kullanmak- dataprovider</h5>
<p><strong>siteController.php</strong></p>
<pre class="brush: php; title: ; notranslate">
public function actionHaberbugun(){
$criteria = new CDbCriteria;
 $criteria-&gt;compare('haber_baslik', 'DENEME', true);
 $criteria-&gt;compare('haber_tarihi', date('Y-m-d'));
 $haberliste = new CActiveDataProvider(
'haberModel', // kullanacağı modelin adı
array(
'criteria' =&gt; $criteria,
'pagination' =&gt; array('pageSize' =&gt; 20), // sayfalamadaki sayı
'sort' =&gt; array('defaultOrder' =&gt; 'haber_id desc') // sıralama koşulu
)
);
$this-&gt;render('haberbugun', array('haberliste'=&gt;$haberliste));
}
</pre>
<p>Görüldüğü gibi en kolay ve anlaşılır kayıt listeleme <span style="text-decoration: underline;"><strong>dataProvider</strong></span> ile yapılabilmektedir. <span style="text-decoration: underline;"><strong>dataProvider </strong></span>kullanımı çok kapsamlı olduğundan şuanlık basit kullanımına yer verdim sonraki konularda daha geniş anlatımına yer vereceğim.</p>
<h5> 4-  zii.widgets.grid.CGridView ile kayıtları listelemek</h5>
<p>Yukarıdaki 2,3 ve 4 deki yöntemlerden herhangi birisi ile kaydınızı almış olalım ve view dosyanızda listemek için <strong><span style="text-decoration: underline;">gridView</span></strong> ile gösterimini ekleyelim.</p>
<p><strong>/view/site/haberbugun.php</strong></p>
<pre class="brush: php; title: ; notranslate">
// html kod
...
widget('zii.widgets.grid.CGridView', array(
'id' =&gt; 'haber-grid',
'template' =&gt; '{items}{summary}{pager}',
'dataProvider' =&gt; $haberliste ,
'columns' =&gt; array(
array(
'type' =&gt; 'raw',
'name' =&gt; 'haber_baslik',
'value' =&gt; 'CHtml::decode(&quot;&lt;a href=&quot;\&amp;quot;/&amp;quot;.$data-&quot;&gt;haber_id.&quot;\&quot;&gt;&quot;.$data-&gt;haber_baslik.&quot;&lt;/a&gt;&quot;)',
'htmlOptions' =&gt; array('width' =&gt; '110'), // td genişliği
),
array(
'type' =&gt; 'raw',
'name' =&gt; 'haber_tarih',
'value' =&gt; 'myfunc::DateFormat($data-&gt;haber_tarihi)',
'htmlOptions' =&gt; array('width' =&gt; '50'), // td genişliği
),
array(
header =&gt;'',
'value' =&gt; 'CHtml::decode(&quot;&lt;a href=&quot;\&amp;quot;/&amp;quot;.$data-&quot;&gt;haber_id.&quot;\&quot;&gt;Haber Detayı&lt;/a&gt;&quot;)',
'htmlOptions' =&gt; array('width' =&gt; '15'), // td genişliği
))
));
?&gt;
..
//html kod
</pre>
<p><em>&#8216;template&#8217; =&gt; &#8216;{items}{summary}{pager}&#8217;, </em>Grid yapınızı belirtebilirsiniz;</p>
<p><span style="text-decoration: underline;"><strong>items:</strong></span>kayıtlarınızın listelendiği tablo,</p>
<p><span style="text-decoration: underline;"><strong> summary:</strong></span> &#8220;Toplam kayıt 50. şuan 20-40 arası görüntüleniyor&#8221; gibi bilgi metinin bulunduğu alandır.</p>
<p><strong><span style="text-decoration: underline;">pager:</span></strong> sayfa numaralarının bulunduğu alandır.<br />
İstediğiniz gibi düzenleyebilir kaldırabilirsiniz.  <em><br />
</em></p>
<pre class="brush: php; title: ; notranslate">
...
'id' =&gt; 'haber-grid',
'template' =&gt; '&lt;/pre&gt;
&lt;div&gt;{summary}{pager}&lt;/div&gt;
&lt;div&gt;{items}&lt;/div&gt;
&lt;div&gt;{summary}{pager}&lt;/div&gt;
&lt;pre&gt;',
...
</pre>
<p><strong><em>columns</em></strong>  objesini eklemezseniz dataProvider select değerine ne yazmışsanız onları listeler , orayada bişey yazmamışsanız tablonuzun tüm sütunlarını listeler .</p>
<p><strong><em>&#8216;value&#8217; =&gt; &#8216;CHtml::decode(&#8220;&lt;a href=\&#8221;/&#8221;.$data-&gt;haber_id.&#8221;\&#8221;&gt;&#8221;.$data-&gt;haber_baslik.&#8221;&lt;/a&gt;&#8221;)&#8217;, </em></strong>Verilerinizi istediğiniz formatta gösterebilirsiniz. <strong>$data </strong>objesi ile dataProvider, kayıtlar için döngüsünü kurarken ilgili kaydı almanızı sağlar. foreach($array =&gt; $val) örneğindeki $val gibi -tabi bu dizi ama mantık aynı-</p>
<p><em>&#8216;<strong>value&#8217; =&gt; &#8216;myfunc::DateFormat($data-&gt;haber_tarihi)&#8217;, </strong></em>Bu kısım çok ihtiyacınız olabilecek bir kullanımdır. Kendinizin oluşturduğu bir fonksiyona değeri göndererek istediğiniz çıktıyı gösterebilirsiniz. Ben myfunc classında DateFormat isimli &#8220;Y-m-d&#8221; olarak gelen tarihi &#8220;d.m.Y&#8221; şekline çeviren bir fonksiyon tanımladım ve çağırdım. Grid de haber tarihi sütununda kayıtlarım 12.01.2012 şeklinde görünecek.</p>
<p><strong> <em>array(</em></strong><br />
<strong> <em>header =&gt;&#8221;,</em></strong><br />
<strong> <em>&#8216;value&#8217; =&gt; &#8216;CHtml::decode(&#8220;&lt;a href=\&#8221;/&#8221;.$data-&gt;haber_id.&#8221;\&#8221;&gt;Haber Detayı&lt;/a&gt;&#8221;)&#8217;,</em></strong><br />
<strong> <em>&#8216;htmlOptions&#8217; =&gt; array(&#8216;width&#8217; =&gt; &#8217;15&#8242;), // td genişliği</em></strong><br />
<em><strong>)</strong><br />
</em>Sanırım en güzel özelliği Gridinize sizinde sutun ekleyebilme imkanınızdır. Yukarıdaki gibi bir kullanım ile sütun ekleyebilir, her kayıt için tekrarlanmasını sağlayabilirsiniz.<br />
<em><br />
</em></p>
<p><em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://wddblog.com/yii-framework/yii-model-de-findbypk-findall-findbyattributes-dataprovider-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

