Symfony2 Cheat Sheet

symfony2cheatsheet

Det är inte lätt att komma ihåg precis allt när du börjar använda något nytt för utveckling. Symfony2 är självklart inget undantag och du kan behöva ett litet cheat sheet för att snabbt hitta det du söker. Genom att skicka in på symfony2cheatsheet.com för just den typen av hjälp.

.htaccess tips och tricks

Det är inte lätt att komma ihåg allt du kan göra i en .htaccess fil. Som tur är så finns det gott om information om det på nätet och en sida jag kom över som har listat många bra grejer är askapache.com.

Neat Status Line – ett alternativ till Powerline

Med Neat Status Line får du ut precis den informationen du behöver och inget mer. Ett bra alternativ om du vill ha något mer lättviktigt än Powerline.

Neat Status Line

Få igång Compass i Symfony2

Av någon anledning så fick jag Sass att fungera utan problem genom att köra gem install sass. Men compass fungerade inte alls efter jag körde gem install compass. Istället fick jag följande fel:

  [Assetic\Exception\FilterException]                                                                   
  An error occurred while running:                                                                      
  '/usr/bin/ruby' '/usr/bin/compass' 'compile' '/tmp' '--config' '/tmp/assetic_compass3I9SBg' '--sass-  
  dir' '' '--css-dir' '' '/tmp/assetic_compassxrF3PM.sass'                                              
                                                                                                        
  Error Output:                                                                                         
  /usr/lib/ruby/site_ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs': Could not find 'compass' (>=  
   0) among 9 total gem(s) (Gem::LoadError)

Vad detta betyder är att compass inte hittas bland dina gems. Men hur är detta möjligt när du precis installerat det? Jo, om du får detta felet så kör du förmodligen precis som jag en annan användare på apache. Detta gör att gems inte har installerats för den användare och i detta fallet kan den inte hitta compass.

Det du ska göra för att lösa detta är att gå in i /etc/gemrc och se till så det inte står ”gem: –user-install” utan det ska istället stå:

gem: --no-user-install

Därefter går du till mappen /usr/lib/ruby/gems//gems och kör:

sudo gem install compass

Nästa gång du kör php app/console assetic:dump så kommer compass fungera för nu är det installerat system-wide! Glöm inte ändra din /etc/gemrc igen till vad det stod innan ifall du vill installera gems för din user i fortsättningen.

CoVim – koda tillsammans i Vim

Pair programming är något som blivit mer och mer vanligt. Tmux är en bra lösning för att köra remote pair programming men nu finns det även ett plugin för Vim där du kan direkt se vad andra skriver.

CoVim som pluginet heter är enkelt att installera och sätta upp så att du snabbt kan komma igång med. På deras Github sida står det ”Think Google Docs for Vim”, vilket betyder att du ser live vad andra skriver.

CoVim

Jag har inte testat den själv än men jag tycker det verkar riktigt intressant och spännande.

Vimbits – dela dina bästa trick

Det finns så mycket du kan göra i Vim att ibland är det svårt att hitta de där riktiga guldkornen som du bara måste ha. På Vimbits kan du hitta flera bra trick och tips. Vad som är bra är att det är en sida där folk röstar fram de bästa, så du kan enkelt hitta det du bör använda.

vimbits

Minifiera CSS med hjälp av CssMin i Symfony2

Jag höll på att slita håret av mig för att få detta att fungera korrekt så jag tänkte att det blir ett perfekt blogginlägg för andra som kanske sitter med samma problem. För min del var det största problemet att jag inte hittade någon bra dokumentation då de flesta verkade köra med YUI compressor som det också finns dokumentation om på Symfony’s egna sida.

Men jag ville ju rulla igång CssMin och inte något annat! Så efter en längre tid av att slita mig i håret och frågor till min Symfony2 guru så kommer jag över en länk som jag borde hittat för längesen. Det var ju så klart CssMin paketetComposer’s egna sida, där du förövrigt kan söka efter paket.

Så in i composer.json filen kastar jag mig och slänger in följande rad under ”require”:

"natxet/CssMin": "dev-master"

Composer update, rensa cache, kör en assetic dump och får ett error som säger ”Method Assetic\AssetWriter::getCombinations() does not exist”. Som tur är hittar jag snabbt en lösning på detta och det är att lägga till ytterligare en rad under ”require” i composer.json filen:

"kriswallsmith/assetic": "v1.1.0-alpha4"

Detta löser felet efter en composer update. I app/config/config.yml ser vi till att följande rad finns med under assetic -> filters:

cssmin: ~

Sen går vi till vår view och ser till att vi använder cssmin på våra filer:

{% stylesheets 
'css/*'
filter="cssmin"
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

(Du justerar självklart pathen till din path för css filerna)

Sen kan du rensa cache för att vara säker, kör assetic:dump och voila! Allt är minifierat!

Sass – Syntactically Awesome Stylesheets

Sass är kort och gott CSS fast mycket bättre. Sass är även något som jag håller på att börja använda mer och mer i och med att jag just nu lär mig Symfony2.

För att bara dra ett enkelt exempel så kan du jämföra Sass med CSS syntax. Här så demonstreras hur du kan använda dig av variablar i Sass:

 /* Sass */

$blue: #3bbfce
$margin: 16px

.content-navigation
  border-color: $blue
  color: darken($blue, 9%)

.border
  padding: $margin / 2
  margin: $margin / 2
  border-color: $blue


/* CSS */

.content-navigation {
  border-color: #3bbfce;
  color: #2b9eab;
}

.border {
  padding: 8px;
  margin: 8px;
  border-color: #3bbfce;
}

Jag kommer personligen börja använda det mycket mer framöver för det känns som det kommer spara massor av tid och det är betydligt lättare att läsa och ändra i än CSS.

Vim snippets för Symfony2 entities

Jag sitter precis och har börjat lära mig Symfony2, som för övrigt är riktigt riktigt spännande och bra. Något jag direkt störde mig på var annotations för Doctrine när jag skulle bygga upp mina entiteter. Som tur är så sitter jag med Vim som min editor of choice och kan enkelt fixa detta med snippets!

snippet ent "New Doctrine2 entity" !b
<?php

namespace `!v substitute(substitute(substitute(expand("%:p"), '\v(.*\/\l+)((\/\u\w+)+)\/\u\w+.php$', '\2', ''), '\/', '\\', 'g'), '^\\', '', '')`;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="${1:`!v substitute(substitute(Filename('', 'myClass'), '\v^(.)', '\l\1', ''), '\v(\u)', '_\l\1', 'g')`}")
 */
class ${2:`!v Filename('', 'MyEntity')`} {
  $3
}
endsnippet

snippet entid "Doctrine2 Entity ID" !b
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
${1:protected} $id;
endsnippet

snippet entx "Doctrine2 Entity X" !b
/**
 * @ORM\Column(type="$1")
 */
${2:protected} $$3;
endsnippet

(Detta är skapat för UltiSnips)

Flödet med detta är då följande:

ent<tab>
entid<tab>
entx<tab>

ent gör så du får början av entityfilen färdig och den tar filnamnet som grund i namnet, entid slänger upp id mallen och med entx kan du göra ett eget värde.

Flera cursors samtidigt i Vim

Att kunna skriva något på flera ställen samtidigt sparar väldigt mycket tid. Med hjälp av Vim Multiple Cursor så kan du nämligen göra detta. Exemplet här nedan visar hur du snabbt kan välja ett tre av samma ord och ändra dem alla samtidigt.

multiple cursors

Det enda du behöver trycka på är Ctrl-N för att välja det ord du står på och sedan repetera så många gånger som det repeteras. Sen kan du göra som i exemplet och bara trycka c och skriva din ändring.