View Sayfasındaki Form Elementleri Ve Tema Görünmüyor

Arkadaşlar merhabalar, daha önceki açtığım konuda da belirtmiştim. Yii’de yeniyim. En çok sıkınrı yaşadığım konulardan birisi de hatalar. Kodları yazarken küçük bir yazım hatası yapsam boş beyaz sayfa gelmesi ve bütün kodları tekrar gözden geçiriyor olmam. Asıl soruma geleyim. Form elementlerinin olduğu form sayfam var. Bu elementler arasına eklediğim dropdownlist’ten dolayı, dropdownlist’twn önceki bir kaç form elementi görünüyor diğerleri görünmüyor. Tabi bunun yanında layoutsda görünmüyor. Bembeyaz bir sayfada bir kaç form elementinden başka bir şey yok sayfada sorun nereden kaynaklanıyor acaba wiev kodlarımı aşağıya ekliyorum.




<?php

/* @var $this UyelerController */

/* @var $model Uyeler */

/* @var $form CActiveForm */

?>


<?php

echo "<div style='width:120px; float: left'>";

$chtml=new CHtml;

echo $chtml::beginForm('#','post');


echo "Üye No:";

echo "<br/>";

echo $chtml::textField('uye_id');

echo "<br/>";

echo "Adı:";echo "<br/>";

echo $chtml::textField ('adi');

echo "<br/>";

echo "Soyadı:";

echo "<br/>";

echo $chtml::textField ('soyadi');

echo "<br/>";

echo "Doğum Yeri";

echo "<br/>";

echo $chtml::textField ('dogum_yeri');

echo "<br/>";

echo "Doğum Tarihi:";

echo "<br/>";

// tarih seçmek için

$this->widget('zii.widgets.jui.CJuiDatePicker',array(

    'name'=>'dogum_tarihi',

    // additional javascript options for the date picker plugin

    'options'=>array(

        'showAnim'=>'fold',

        'language' => 'tr',

        'dateFormat' => 'yy-mm-dd', //save to db format

        'altFormat' => 'dd/mm/yy', // show to user format

    ),

    'htmlOptions'=>array(

        'style'=>'height:20px;'

    ),

));

echo "<br/>";

echo "Nüfusa Bağlı Olduğu İl:";

echo "<br/>";

echo $chtml::dropDownList($model,'ad',CHtml::listData(Iller::model()->findAll(

        array('order' => 'ilID')),'ilID','ad'),

    array(

        'prompt'=>'İl Seçiniz',

        'ajax'=>array(

            'type'=>'POST',

            'url' => CController::createUrl('Ilcesec'),

            'data'=> array('ilID'=>'js:this.value'),

            'update'=>'#Ilceler',))

);


// İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Nüfusa Bağlı Olduğu İlçe:";

echo "<br/>";

echo $chtml::dropDownList('Ilceler','', array(),

    array('prompt'=>'ilce seciniz')); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Anne Adı:";

echo "<br/>";

echo $chtml::textField ('anne_adi');

echo "<br/>";

echo "Baba Adı:";

echo "<br/>";

echo $chtml::textField ('baba_adi');

echo "<br/>";

echo "</div>";

echo "<div style='width:150px; margin-left: 100px; float: left'>";

echo "Telefon";

echo "<br/>";

echo $chtml::textField ('Tel');

echo "<br/>";

echo "Kan Grubu";

echo "<br/>";

echo $chtml::DropDownList(kan_grubu,'',array('1'=>'A Rh (+)','2'=>'A Rh (-)','3'=>'B Rh (+)','4'=>'B Rh (-)','5'=>'AB Rh (+)','6'=>'AB Rh (-)','7'=>'0 Rh (+)','8'=>'0 Rh (-)'),array('empty' =>('Kan Grubu Seçiniz') )); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Cinsiyet:";

echo "<br/>";

echo $chtml::DropDownList(cinsiyet,'',array('0'=>'Erkek','1'=>'Bayan'),array('empty' =>('Cinsiyet Seçiniz') )); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Adres:";

echo "<br/>";

echo $chtml::textArea('adres');

echo "<br/>";

echo "Adres İli";

echo "<br/>";

//echo $chtml::DropDownList(İlce,'',$liste,array('empty' =>('İlce Seçiniz') )); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Adres İlçesi:";

echo "<br/>";

//echo $chtml::DropDownList(İl,'',$liste,array('empty' =>('İl Seçiniz') )); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Üye Görevi:";

echo "<br/>";

echo $chtml::DropDownList(uye_gorevi,'',array('0'=>'Üye','1'=>'Başkan','2'=>'Başkan Yardımcısı','3'=>'Muhasip','4'=>'Sekreter','5'=>'Yedek Üye'),array('empty' =>('Üyelik Türü Seçiniz') )); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Üyelik Tarihi:";

echo "<br/>";

// tarih seçmek için

$this->widget('zii.widgets.jui.CJuiDatePicker',array(

    'name'=>'uye_kayit_tarihi',

    // additional javascript options for the date picker plugin

    'options'=>array(

        'showAnim'=>'fold',

        'language' => 'tr',

        'dateFormat' => 'yy-mm-dd',

        'altFormat' => 'dd/mm/yy', // show to user format


    ),

    'htmlOptions'=>array(

        'style'=>'height:20px;'

    ),




));

echo "<br/>";

echo "Üyelik Durumu:";

echo "<br/>";

echo $chtml::DropDownList(uye_durumu,'',array('0'=>'Aktif','1'=>'Pasif'),array('empty' =>('Üyelik Durumu Seçiniz') )); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo $chtml::submitButton('Üye Ekle',array('name'=>'ekle'));

echo $chtml::resetButton('İptal',array('name'=>'iptal'));

echo "</div>";

echo "<div style='width: 500px; height: 400px; float: right; background-color: #7EC4FF;'>";

echo "denme";

echo "</div>";

?>



Merhaba @Nahit,

Kod yazarken küçük bir hata yapmana rağmen ekranda herhangi bir hata mesajı görünmüyorsa bunun nedenleri,

1- hata mesajlarının gösterilmemesi


php.ini

config dosyandaki hata mesajlarının gösterilip/gösterilmemesi veya hangi seviyede gösterilmesi gerektiği ayarlanmamış demektir. Bunlar,


display_errors = On


error_reporting = E_ALL

display_errors değerini development ortamında On, production ortamında Off yapabilirsiniz.

error_reporting değerini development ortamında E_ALL, production ortamında E_ALL & ~E_DEPRECATED & ~E_STRICT yapabilirsiniz.

2- Projenizin içindeki


index.php

dosyanızda


defined('YII_DEBUG') or define('YII_DEBUG',true);

olması gereken satır muhtemelen


defined('YII_DEBUG') or define('YII_DEBUG',false);

şeklinde olabilir.

YII_DEBUG değeri development ortamında true, production ortamda false yapabilirsiniz,

3- Yii framework e özgü hata mesajlarınızın gösterilmesi için ilgili controller dosyanızdaki error action ı doğru zamanda devreye girip düzgün çalışması gerekir.




    /**

     * This is the action to handle external exceptions.

     */

    public function actionError() {

        if ($error = Yii::app()->errorHandler->error) {

            if (Yii::app()->request->isAjaxRequest)

                echo $error['message'];

            else

                $this->render('error', $error);

        }

    }



bunun için $this->render(‘error’, $error); satırında belirtilen


'error'

view dosyanızın da bulunması gerekir.

Bu yazdıklarımı dikkate alarak işlemleri gözden geçirebilirmisiniz,

Bunları yaptıktan sonra aldığınız hata mesajını paylaşabilirseniz hatanızın giderilmesi konusunda yardımcı olabiliriz.

Aksi takdirde kodları satır satır, harf harf inceleyip hatayı tespit etmek samanlıkta iğne aramaya benzer,

Kodlama aşamasında IDE kullanarak syntax hatalarınızın da önüne geçebilirsiniz.

Şu an NetBeans kullanmaktayım, Eclipse türevi Zend Studio veya diğer IDE ler de bu işi otomatik yapabiliyor.

İyi çalışmalar.

Merhabalar php.ini de gerekli değişikliği yaptım yanlış hatırlamıyorsam yii’yi kurarken değiştirmiştim şimdi eski haline geldim. Ayrıca proje ana dizinindeki


 index.php

de yer alan hata gösterme biçimi sizin söylediğiniz gibiydi yani şu şekilde


defined('YII_DEBUG') or define('YII_DEBUG',true);

Öte yandan phpStorm isminde bir ide kullanıyorum daha iyi ve kullanışlısı varsa önerdiğiniz varsa ona geçebilirim.

Uygulamamda aldığım hata başlığı şu şekilde gerekirse detaylarıda aktarırım.


Recoverable error


Object of class Iller could not be converted to string

Arkadaşlar bazı sorunları kendi çabalarımla anladım. Ancak sorun devam ediyor.Bana yardımcı olacaklara yardımcı olması açısından kodlarımı buraya yazıyorum.


Controller dosyam


<?php


class UyeController extends Controller

{

	public function actionArama()

	{

               $sonuc = Uyeler::model()->findAll();

		 $this->render('arama', array('sonuc'=> $sonuc));




	}


	public function actionEkle()

	{




        $iller = new Iller();

        $this->render('ekle', array('iller'=>$iller));


	}




    public function actionIlcesec()

    {

        $data = Ilceler::model()->findAll('ilID=:ilID',

            array(':ilID'=>$_POST['ilID']));

        $data= CHtml::listData($data,'ilceID','ad');


        echo "<option value=''>Ilceler</option>";

        foreach($data as $value=>$name)

            echo CHtml::tag('option', array('value'=>$value),CHtml::encode($name),true);

    }


	public function actionGuncelle()

	{

		$this->render('guncelle');

	}


	public function actionIndex()

	{

		$this->render('index');

	}


	// Uncomment the following methods and override them if needed

	/*

	public function filters()

	{

		// return the filter configuration for this controller, e.g.:

		return array(

			'inlineFilterName',

			array(

				'class'=>'path.to.FilterClass',

				'propertyName'=>'propertyValue',

			),

		);

	}


	public function actions()

	{

		// return external action classes, e.g.:

		return array(

			'action1'=>'path.to.ActionClass',

			'action2'=>array(

				'class'=>'path.to.AnotherActionClass',

				'propertyName'=>'propertyValue',

			),

		);

	}

	*/

}


Wiev dosyam ise aşağıdaki şekilde


<?php

/* @var $this UyelerController */

/* @var $model Uyeler */


?>


<?php

echo "<div style='width:120px; float: left'>";

$chtml=new CHtml;

echo $chtml::beginForm('#','post');

echo "Üye No:";

echo "<br/>";

echo $chtml::textField('uye_id');

echo "<br/>";

echo "Adı:";echo "<br/>";

echo $chtml::textField ('adi');

echo "<br/>";

echo "Soyadı:";

echo "<br/>";

echo $chtml::textField ('soyadi');

echo "<br/>";

echo "Doğum Yeri";

echo "<br/>";

echo $chtml::textField ('dogum_yeri');

echo "<br/>";

echo "Doğum Tarihi:";

echo "<br/>";

// tarih seçmek için

$this->widget('zii.widgets.jui.CJuiDatePicker',array(

    'name'=>'dogum_tarihi',

    // additional javascript options for the date picker plugin

    'options'=>array(

        'showAnim'=>'fold',

        'language' => 'tr',

        'dateFormat' => 'yy-mm-dd', //save to db format

        'altFormat' => 'dd/mm/yy', // show to user format

    ),

    'htmlOptions'=>array(

        'style'=>'height:20px;'

    ),

));

echo "<br/>";

echo "Nüfusa Bağlı Olduğu İl:";

echo "<br/>";


echo $chtml::dropDownList($iller,'ad',CHtml::listData(Iller::model()->findAll(

        array('order' => 'ilID')),'ilID','ad'),

    array(

        'prompt'=>'İl Seçiniz',

        'ajax'=>array(

            'type'=>'POST',

            'url' => CController::createUrl('Ilcesec'),

            'data'=> array('ilID'=>'js:this.value'),

            'update'=>'#Ilceler',))

);


// İlçelerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Nüfusa Bağlı Olduğu İlçe:";

echo "<br/>";

echo $chtml::dropDownList('Ilceler','', array(),

    array('prompt'=>'ilce seciniz')); // İlçelerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Anne Adı:";

echo "<br/>";

echo $chtml::textField ('anne_adi');

echo "<br/>";

echo "Baba Adı:";

echo "<br/>";

echo $chtml::textField ('baba_adi');

echo "<br/>";

echo "</div>";

echo "<div style='width:150px; margin-left: 100px; float: left'>";

echo "Telefon";

echo "<br/>";

echo $chtml::textField ('Tel');

echo "<br/>";

echo "Kan Grubu";

echo "<br/>";

echo $chtml::DropDownList('kan_grubu','',array('1'=>'A Rh (+)','2'=>'A Rh (-)','3'=>'B Rh (+)','4'=>'B Rh (-)','5'=>'AB Rh (+)','6'=>'AB Rh (-)','7'=>'0 Rh (+)','8'=>'0 Rh (-)'),array('empty' =>('Kan Grubu Seçiniz') )); // Kan Grubu listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Cinsiyet:";

echo "<br/>";

echo $chtml::DropDownList('cinsiyet','',array('0'=>'Erkek','1'=>'Bayan'),array('empty' =>('Cinsiyet Seçiniz') )); // Cinsiyet listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Adres:";

echo "<br/>";

echo $chtml::textArea('adres');

echo "<br/>";

echo "Adres İli";

echo "<br/>";

//echo $chtml::DropDownList(İlce,'',$liste,array('empty' =>('İlce Seçiniz') )); // İllerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Adres İlçesi:";

echo "<br/>";

//echo $chtml::DropDownList(İl,'',$liste,array('empty' =>('İl Seçiniz') )); // İlçelerin listesini dropdownlistte gösteriyor.

echo "<br/>";

echo "Üye Görevi:";

echo "<br/>";

echo $chtml::DropDownList('uye_gorevi','',array('0'=>'Üye','1'=>'Başkan','2'=>'Başkan Yardımcısı','3'=>'Muhasip','4'=>'Sekreter','5'=>'Yedek Üye'),array('empty' =>('Üyelik Türü Seçiniz') )); // Üye görevi gösteriyor.

echo "<br/>";

echo "Üyelik Tarihi:";

echo "<br/>";

// tarih seçmek için

$this->widget('zii.widgets.jui.CJuiDatePicker',array(

    'name'=>'uye_kayit_tarihi',

    // additional javascript options for the date picker plugin

    'options'=>array(

        'showAnim'=>'fold',

        'language' => 'tr',

        'dateFormat' => 'yy-mm-dd',

        'altFormat' => 'dd/mm/yy', // show to user format


    ),

    'htmlOptions'=>array(

        'style'=>'height:20px;'

    ),




));

echo "<br/>";

echo "Üyelik Durumu:";

echo "<br/>";

echo $chtml::DropDownList('uye_durumu','',array('0'=>'Aktif','1'=>'Pasif'),array('empty' =>('Üyelik Durumu Seçiniz') )); // Üyelik durumu dropdownlistte gösteriyor.

echo "<br/>";

echo $chtml::submitButton('Üye Ekle',array('name'=>'ekle'));

echo $chtml::resetButton('İptal',array('name'=>'iptal'));

echo "</div>";

echo "<div style='width: 500px; height: 400px; float: right; background-color: #C9E0ED;'>";

echo "denme";

echo "</div>";


?>



aldığım hata ise şu şekilde


Recoverable error


Object of class Iller could not be converted to string


D:\wamp\www\yii\framework\web\helpers\CHtml.php(2155)


D:\wamp\www\yii\dernek_yonetim\protected\views\uye\ekle.php(55): CHtml::dropDownList(Iller, "ad", array(1 => "ADANA", 2 => "ADIYAMAN", 3 => "AFYONKARAHİSAR", 4 => "AĞRI", ...), array("prompt" => "İl Seçiniz", "ajax" => array("type" => "POST", "url" => "/yii/dernek_yonetim/index.php?r=uye/Ilcesec", "data" => array("ilID" => "js:this.value"), "update" => "#Ilceler")))

50         'ajax'=>array(

51             'type'=>'POST',

52             'url' => CController::createUrl('Ilcesec'),

53             'data'=> array('ilID'=>'js:this.value'),

54             'update'=>'#Ilceler',))

55 );

56 

57 // İlçelerin listesini dropdownlistte gösteriyor.

58 echo "<br/>";

59 echo "Nüfusa Bağlı Olduğu İlçe:";

60 echo "<br/>";


D:\wamp\www\yii\dernek_yonetim\protected\controllers\UyeController.php(18): CController->render("ekle", array("iller" => Iller))

13     public function actionEkle()

14     {

15 

16 

17         $iller = new Iller();

18         $this->render('ekle', array('iller'=>$iller));

19 

20     }

21 

22 

23     public function actionIlcesec()

dropDownList kullanırken dropDownList(string $name, string $select, array $data, array $htmlOptions=array ( )) şeklinde kullanman gerekiyor

activeDropDownList şeklinde dropdownlist i kullanmaya çalışmışsın

Başında active ifadesi olan elementlerle olmayan elementlerin farkını ben şöyle anladım yanlışsa düzeltelim. Veritabanından veri çekilen bir elementse active kullanıyoruz. Veritabanıyla işimiz yoksa normal element kullanıyoruz. Doğru mudur acaba?

evet doğru, bir row üzerinde işlem yapmak istiyorsan active formu kullanman daha doğru olur

row derken ne demek istedin anlamadım doğrusu. Peki CActiveForm ile Chtml’in farkı nedir? Ben CActivForm widgetini kullansam daha mı kolay olurdu acaba bu işler?

row derken db deki bir tablonun bir satırı demek istedim.

  1. sorun evet active formu kullanman daha güzel bir çözüm olurdu. Sonuçda üye bilgilerinin tutulduğu bir tabloya bir satır eklemek istiyorsun.

Bir tavsiye de gii kullanman konusunda. db yi tasarladıktan sonra gii le bu formları otomatik oluştutturabiliyorsun

gii ile otomatik oluşturabiliyorum ancak dropdownlist olması gereken alanları felan oluşturmuyor onun yerine text alan oluşturuyor.

evet, dropdownları kendin düzenlemen gerekmekte