İçeriğe atla

Symfony

Symfony twig çoklu değişken gönderme

Bazı yerlerde çoklu değişkenler göndermeniz gerekebilir. Bu durumda ilgili kontrollere alttaki kodu yazınız:

     $bugun_baslangic = strtotime(date("d-m-Y 00:00:01"));
        $bugun_bitis = strtotime(date("d-m-Y 23:59:59"));
        $yongiden = 2;
        $yongelen = 1;
        $yedi_gun_rapor = array();
for ($i=1; $i <8 ; $i++) {
            $gun_baslama =  strtotime(date('d-m-Y 00:00:01', strtotime("-$i days")));
            $gun_bitis =  strtotime(date('d-m-Y 23:59:59', strtotime("-$i days")));
            $gun = date('d-m-Y', strtotime("-$i days"));

            $yongelen = $em->getRepository('WebAdminBundle:AramaYonu')->find($yongelen);
            $arama_sayisi_gelen  = $em
                ->createQueryBuilder()
                ->select('d')
                ->from('WebAdminBundle:AramaKayit', 'd')
                ->Where('d.kayit_tarihi <= :bitis')
                ->andWhere('d.kayit_tarihi >= :baslama')
                ->andWhere('d.AramaYonu = :yongelen')
                ->setParameter('baslama', $gun_baslama)
                ->setParameter('bitis', $gun_bitis)
                ->setParameter('yongelen', $yongelen)
                ->getQuery()
                ->getResult();

            $yongiden = $em->getRepository('WebAdminBundle:AramaYonu')->find($yongiden);
            $arama_sayisi_giden  = $em
                ->createQueryBuilder()
                ->select('d')
                ->from('WebAdminBundle:AramaKayit', 'd')
                ->Where('d.kayit_tarihi <= :bitis')
                ->andWhere('d.kayit_tarihi >= :baslama')
                ->andWhere('d.AramaYonu = :yongelen')
                ->setParameter('baslama', $gun_baslama)
                ->setParameter('bitis', $gun_bitis)
                ->setParameter('yongelen', $yongiden)
                ->getQuery()
                ->getResult();

            //array_push($yedi_gun_gelen, $arama_sayisi_gelen);
            $yedi_gun_rapor[$gun]['gelen'] = count($arama_sayisi_gelen);
            $yedi_gun_rapor[$gun]['giden'] = count($arama_sayisi_giden);

        }
      return $this->render('WebAdminBundle:Default:index.html.twig',array(
            'yedi_gun_rapor'=>$yedi_gun_rapor,
        ));

Twig dosyasında ise

   {% for key,user in yedi_gun_rapor %}
                ['{{ key}}',  {{ user.giden}},      {{ user.gelen}}],
                {% endfor %}

yazmanız yeterlidir.

Symfony twig e değişken gönderme

İlgili kontrollere gidip gerekli kodlarınızı yazın.
Örnegin:

 $em      = $this->getDoctrine()->getManager();
        $bugun_baslangic = strtotime(date("d-m-Y 00:00:01"));
        $bugun_bitis = strtotime(date("d-m-Y 23:59:59"));
        $yongiden = 2;
        $yongelen = 1;

        $bugun_toplam_arama  = $em
            ->createQueryBuilder()
            ->select('d')
            ->from('WebAdminBundle:AramaKayit', 'd')
            ->Where('d.kayit_tarihi <= :bitis')
            ->andWhere('d.kayit_tarihi >= :baslama')
            ->setParameter('baslama', $bugun_baslangic)
            ->setParameter('bitis', $bugun_bitis)
            ->getQuery()
            ->getResult();

 return $this->render('WebAdminBundle:Default:index.html.twig',array(
            'bugun_toplam_arama'=>count($bugun_toplam_arama),
        ));

Kontrollere eklediğimiz kodlar yukardadır.

İlgili template dosyasına yazmamız gereken kod:

{{ bugun_toplam_arama }} 

Symfony Twige ile çalışmadan önce yapılması gereken

Smyfony projeniz var ve twig ile çalışacaksanız öncelikle aşagıdaki kodları eklemeniz gerekmektedir.

 
app->config->config.xml
ekle

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    globals:
          site_url: %site_url%
          site_url_t: %site_url_t%
          site_title: %site_title%

app->config->oaraneters.yml
ekle

    site_url: http://localhost/bulutrehber/
    site_url_t: http://localhost/bulutrehber/
    site_dizini: C:\xampp\htdocs\bulutrehber
    site_title: Bulut Rehber


    upload_g_dir:   %site_dizini%/web/assets/uploads/
    upload_g_url:   %site_url%/web/assets/uploads/

    upload_k_dir: %site_dizini%/web/images/konu/
    upload_k_url: %site_url%/web/images/konu/

    upload_r_dir: %site_dizini%/web/images/
    upload_r_url: %site_url%/web/images/

Catchable Fatal Error: could not be converted to string hatası

Symfony kullanırken ilişkili tablolar kurdugunuzda aşagıdaki benzer bir hatayı bulabilirsiniz bu durumlarda ilişki kurduğunuz diğer tablonun entity sinde düzenleme yapmanız gerekiyor.

Örnek Kod Hatası:

Catchable Fatal Error: Object of class Web\AdminBundle\Entity\Otel could not be converted to string
500 Internal Server Error - ContextErrorException

Çözümü:

 

public function __toString()
    {
        return $this->getAd();
    }

burada o tablonun ad alanını stringe ceviyoruz.
Lütfen unutmayınız ilişki kurduğumuz tablodaki enttiye yazacagız. ve bu çözüm symfony kullananlar için geçerlidir.

Veritabanından gelen veriye göre işlem yapma

Veritabanınızda müşterinizin yasaklı olup olmadıgını kaydetmeniz için basit bir kod blogu
yasak telefon ve yasak mail diye alanlar oluşuturun. Sonrasında aşagıdakileri yapmanız yeterli.


'yasak_telefon' =>'Yasak Değil',
'yasak_mail' =>'Yasak Değil',
if(@$user->getYasakTelefon())
{
$yenikullanici['yasak_telefon'] = 'Yasak';
}
if(@$user->getYasakMail())
{
$yenikullanici['yasak_mail'] = 'Yasak';
}

Bu işlemi kontrollerde yapmanız gerekmektedir.

Symfony il , ilçe ve semt seçimi yaptırma

form type da
->add('Il', null, array('label'=>'Il','attr'=>array('class'=>'form-control')))

->add(‘Il’, null, array(‘label’=>’Il’,’attr’=>array(‘class’=>’form-control select2me’)))

new twige ekle

 



{% block script %}

{% endblock %}

Kontroller a ekle
$em = $this->getDoctrine()->getManager(); kodunun altına ekle

if($request->get(‘ilce’))
{
$ilce = $em->getRepository(‘WebAdminBundle:Ilce’)->find($request->get(‘ilce’));
$otel->setIlce($ilce);
}
if($request->get(‘semt’))
{
$semt = $em->getRepository(‘WebAdminBundle:Semt’)->find($request->get(‘semt’));
$otel->setSemt($semt);
}
if($request->get(‘mahalle’)) {
$mahalle = $em->getRepository(‘WebAdminBundle:Mahalle’)->find($request->get(‘mahalle’));
$otel->setMahalle($mahalle);
}

base.html.twig ekle

getir

new.html.twig form bitişinin başına ekle



edit.twig.html ekle

form_widget altına ekle



Sayfanın en altına
{% block script %}

{% endblock %}

İndir:
http://www.tasarimrehberi.net/download/150/

Symfony Açılış Sayfasını değiştirme

Bu yazıyı symfony ve twig kullanarak template sistemi yapmış olduğunuzu varsayarak yazıyorum.
Yapmanız gereken:
Kurmuş olduğunuz bundle içersine girip Resources –> views->Default>index.html.twig

dosyasını değiştirmeniz.
Benim yaptıgım:

{% extends 'base.html.twig' %}
{% block title %}
    Site Yönetim Paneli
{% endblock %}
{% block menu %}
Site Yönetim Paneli
{% endblock %}
{% block body %}
    Site Yönetim Paneli
{% endblock %}

Symfony İlişkili Hücreyi Gösterme

İlişkilendirdiginiz hücreti listelerken crud göstermez bu durumda yapmanız gerekenler:

İlişkili url göstermek isterseniz

Kontroller dosyasına
'url' =>$user->getSite()->getUrl(),

Twig dosyasına:
{
property: 'url',
label: 'Site',
sortable: true
},

koymanız yeterlidir.

Symfony Çok kullanılan kodlar

Symfony de en çok kullanılan komutlar:

php bin/console generate:bundle
php bin/console doctrine:generate:entity
php bin/console doctrine:generate:entities WebSiteBundle
php bin/console doctrine:schema:update --force

php bin/console generate:doctrine:crud