Symfony Simple Sitemap

<?php

namespace Brkhn\WebBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;

class SiteMapController extends Controller
{
    /**
     * @Route("/sitemap.{_format}", name="sitemaps_sitemap", Requirements={"_format" = "xml"})
     * @Template("BrkhnWebBundle:SiteMap:index.xml.twig")
     */
    public function indexAction()
    {
        $urls = array();
        $hostname = $this->getRequest()->getHost();

        $urls[] = array('loc' => trim($this->get('router')->generate('home_page'),'/'), 'changefreq' => 'weekly', 'priority' => '1.0');

        $questions = $this->getDoctrine()->getRepository('QuestionWebBundle:Posts');
        foreach($questions->findBy(array('typeId'=>1)) as $post ){
            $urls[] = array('loc' => $this->get('router')->generate('posts_view',
                    array('id' => $post->getId())), 'priority' => '0.5');
        }

        $users = $this->getDoctrine()->getRepository('UserUserBundle:User');
        foreach($users->findAll() as $user ){
            $urls[] = array('loc' => $this->get('router')->generate('user_profile',
                    array('id' => $user->getId())), 'priority' => '0.5');
        }
        return array('urls' => $urls, 'hostname' => $hostname);

    }

}
 
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    {% for url in urls %}
        <url>{# check if hostname is not alreay in url#}
            <loc>http://{%if url.loc|replace({hostname:''}) == url.loc%}{{hostname}}{{url.loc}}{%else%}{{url.loc}}{%endif%}</loc>
            {% if url.lastmod is defined %}
                <lastmod>{{url.lastmod}}</lastmod>
            {% endif %}
            {% if url.changefreq is defined %}
                <changefreq>{{url.changefreq}}</changefreq>
            {% endif %}
            {% if url.priority is defined %}
                <priority>{{url.priority}}</priority>
            {% endif %}
        </url>
    {% endfor %}
</urlset>

Çok fazla yazıya gerek olmasa gerek 🙂 kodlar konuşsun basitce bir sitemap xml oluşturmanıza yardımcı olur umarım.

Composer Language Problem

Benim sistemin Ubuntu 13.04 php 5.4.9 (Türkçe)

Eğer composer ile bir paket indirmeye yahut güncellemeye çalıştığınızda


PHP Fatal error: Couldn't find implementation for method Composer\DependencyResolver\RuleSet::getiterator in Unknown on line 0

Fatal error: Couldn't find implementation for method Composer\DependencyResolver\RuleSet::getiterator in Unknown on line 0

Gibi bir hata alıyor iseniz. Aynı hatayı dili İngilizce yaptığınız almıyor ve sorunsuz bir biçimde yüklüyor ise ;


#komut satırından bu komutu vermeniz sorununuzun düzelmesine yardımcı olacaktır
export LANG=C