четверг, 19 января 2012 г.

Symfony: short commands in terminal

Save time and reduce typing errors on working in console

$ nano /usr/local/bin/sf

if [ -z "$1" ]; then
    echo "Missing parameters."
    echo "Usage: $0 --midiff, --mi or --buall"
    exit 0
fi

case "$1" in
    "--cc" )
    php symfony cc
    ;;

    "--midiff" )
    php symfony doctrine:generate-migrations-diff
    ;;

    "--mi" )
    php symfony doctrine:migrate
    ;;

    "--buall" )
    php symfony doctrine:build --all-classes
    ;;

    "--busql" )
    php symfony doctrine:build-sql
    ;;

    "--inssql" )
    php symfony doctrine:insert-sql
    ;;

    "--puass" )
    php symfony plugin:publish-assets
    ;;

esac
exit 0

Usage:

For example: you need modify your schema, migrate, rebuild all classes and clear cache.

$ sf --midiff
$ sf --mi
$ sf --buall
$ sf --cc

вторник, 22 февраля 2011 г.

Symfony: doctrine custom sql order

    $this->data = Doctrine_Query::create()
->from('Category c')
->innerJoin('c.Product p')
->whereIn('c.slug', array('cpu', 'mainboards', 'ram', 'hdd', 'videocards', 'cases'))
->addWhere('p.is_published = ?', true)
->addOrderBy('FIELD(c.slug, "cpu", "mainboards", "ram", "hdd", "videocards", "cases")')
->execute()
;

понедельник, 7 февраля 2011 г.

среда, 2 февраля 2011 г.

Symfony: Doctrine IndexBy field


$posts = Doctrine_Query::create()
->from('Post p INDEXBY id')
->fetchArray()
;

на выходе получаем массив индексированный по реальным значениям id,
а не [0 => array(), 1 => array() ... ]

p.s. спасибо develop7 за наводку

суббота, 29 января 2011 г.

Symfony: doctrine raw sql, get alphabet from i18n model

Задача: получить алфавит из i18n модели, для разных языков.
Показать только те буквы на которые начинаются имена.

in actions.class.php

$lang = $request->getParameter('lang', 'ru');

$query = "
SELECT substring(`name`,1,1) as firstletter
FROM `xxx_translation`
WHERE `lang` = '".$lang."' AND
substring(`name`,1,1) <> ''
GROUP BY substring(`name`,1,1)
";

$pdo = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$stmt = $pdo->prepare($query);
$stmt->execute();

$this->abc = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);


in template

<?php if ($abc): ?>
<ul id="abcList">
<?php foreach ($abc as $letter): ?>
<li><?php echo link_to($letter, '@user_list?search='.$letter.'&pos=start')?> </li>
<?php endforeach; ?>
</ul>
<br clear="all" />
<?php endif; ?>


Css

ul#abcList li {
float: left;
display: inline;
list-style: none;
padding: 4px;
}

понедельник, 27 сентября 2010 г.

вторник, 21 сентября 2010 г.

Symfony: backend pager



Что бы получше выделить текущую страницу в пейджере далаем небольшие изменения:

1. CSS
.currentPage {
border: 1px solid #ff9900;
padding: 4px;
background: #eeeeff;
}


2. layout.php

jQuery(document).ready(function($){

// try to find pager
pager = $('.sf_admin_pagination').html();
if (pager) {
var re = /(\s+)(\d+)(\s)+/;
var newstr = pager.replace(re, "$2");
$('.sf_admin_pagination').html(newstr);
}