İç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 3 Giriş Seviyesi Notları

Bundle Oluştuktan sonra
enttiy oluştur

php bin/console doctrine:generate:entity

WebMuhasebeBundle:Fatura

Sonrasında ilişki kurulacak.

İlişkilerde

 /**
 * @ORM\OneToMany(targetEntity="Ilce", mappedBy="Il", cascade={"persist", "remove"})
 */
 private $Ilce;

id göndermek için kullanıyoruz. Kendi id sini karşıya entitye gönderiyor.


/**
 * @ORM\ManyToOne(targetEntity="Il", inversedBy="Ilce")
 * @ORM\JoinColumn(name="il_id", referencedColumnName="id")
 */
 public $il;

Buradaki karşıdan gelen id kayıt ediyor. (ilden gelen id yi kayıt ediyor)

1 ilin birden fazlası ilçesi olabilir ama bir ilçenin ilçesi olamaz.
İl burada one kısmı ilçe many olur.
işlemler bittikten sonra

php bin/console doctrine:generate:entities WebMuhasebeBundle
php bin/console doctrine:schema:update --force

sonrasında sayfalandırmak için kullanmak için aşagıdaki kodu yazıyoruz

 

composer require knplabs/knp-paginator-bundle

şeklinde kurunuz

github linki : https://github.com/KnpLabs/KnpPaginatorBundle

Config.yml içerisinde aşagıdaki kodu ekleyiniz:

knp_paginator:
 page_range: 5 # default page range used in pagination control
 default_options:
 page_name: page # page query parameter name
 sort_field_name: sort # sort field query parameter name
 sort_direction_name: direction # sort direction query parameter name
 distinct: true # ensure distinct results, useful when ORM queries are using GROUP BY statements
 template:
 pagination: KnpPaginatorBundle:Pagination:sliding.html.twig # sliding pagination controls template
 sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template

sonrasında user için

composer require friendsofsymfony/user-bundle "~2.0@dev"

şeklinde kurulum yapınız.

Ekle:

<?php
// app/AppKernel.php

public function registerBundles()
{
$bundles = array(
// ...
new FOS\UserBundle\FOSUserBundle(),
// ...
);
}

Kendi bundlunuze seçip user.php oluşturup

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

public function __construct()
{
parent::__construct();
// your own logic
}
}

içine ekleyin

devamını
http://symfony.com/doc/current/bundles/FOSUserBundle/index.html

adresinden bakabilirsiniz.

a) Doctrine ORM User class

bölümünde

// src/AppBundle/Entity/User.php

kısmında oluşturmuş oldugunuz bundle göre vermeniz gerekmektedir.

İşlemleri bitirdikten sonra crud işlemini yapınız.

Crud Dökümanı
http://symfony.com/doc/current/bundles/SensioGeneratorBundle/commands/generate_doctrine_crud.html

php app/console generate:doctrine:crud

Crud oluşturabilirsiniz.
Oluşturalacak bütün entityler için tek tek yazmanız gerekiyor.

yml yapıyoruz
isim girerkende Örnek WebMuhasebeBundle:fatura

Symfony ile Twig e değişken gönderme

Symfony  ile çalışanlar template sistemi olarak genelde twig kullanırlar.

o sayfaya değişken göndermek için yapmanız gerken


/**
* @Route("/firma/ekle",name="firma_ekle")
*/
public function writeAction()
{
$isim = 'Nurettin';
return $this->render("@Muhasebe/Default/firma_ekle.html.twig",['isim'=>$isim]);

}

burada Muhasebe adlı bir bundle oluşturdum. onun altında firma_ekle.html.twig dosyam mevcuttu oraya değişken gönderdim. isim adlı

templatte çıkartmak için ise

{{ isim }}

yazmanız yeterli.

Symfony Kurulumu Hatası

Xampp Symfony kurarken hata verebilir.

Fix "cURL error 60: SSL certificate problem"

benzer hatanın vermesi curl kütüphanesinin yüklü olmadığından dolayıdır.

Aşagıdaki Dosyayı indirin:

https://curl.haxx.se/ca/cacert.pem

C:\XAMPP\php\

klasörün içine atınız.

Sonra php.ini dosyasına aşagıdaki kodu ekleyiniz:

[cURL]
curl.cainfo="C:\XAMPP\php\cacert.pem"

sonra apachi yi ve php yi resetleyiniz.