Permalink
Browse files

supplements

  • Loading branch information...
1 parent 63a9a14 commit 3f21900b9eab14cc9e718e7c6306e23104439fc5 @peponi committed Feb 14, 2013
Showing with 45 additions and 26 deletions.
  1. +35 −26 index.html
  2. +6 −0 script/app.js
  3. +4 −0 stylesheets/app.css
View
61 index.html 100644 → 100755
@@ -69,7 +69,7 @@
<br><br>
<p>Wer sich die Installation und Konfiguration von Symfony sparen will und gleich mit dem <a href="#database">ORM Design anfagen</a> m&ouml;chte, kann sich alternativ auch eine <a href="http://de.wikipedia.org/wiki/Virtuelle_Maschine">fertige VM</a> saugen.</p>
<dl class="accordion">
- <dt class="virtualbox"><i class="icon-info-sign"></i> VirtualBox Image</dt>
+ <dt class="virtualbox blue"><i class="icon-info-sign"></i> VirtualBox Image</dt>
<dd class="virtualbox">
<p><a href="https://de.wikipedia.org/wiki/Virtualbox">VirtualBox</a> ist schnell und mühelos zu <a href="http://VirtualBoxImages.com/GettingStarted">installieren</a>. Der Vorteil liegt darin dass sich die Punkte 1 - 4 nicht jedesmal wiederholen wenn ich ein neues Symfony Projekt anfange, ich kann direkt starten.Ausserdem habe ich durch die Snapshot funktion eine zusätzliche rollback absicherung zusätzlich zu Git.</p>
<p>Lade die Installationsdatei f&uuml;r <a href="https://www.virtualbox.org/wiki/Downloads">OS X und Windows </a>schnell herunter und Installiere es, oder f&uuml;r Ubuntu einfach:</p>
@@ -87,7 +87,7 @@
</ul>
<p>Die Virtuelle Maschine ist momentan im Netzwerkmodus, das heisst der Ubuntu Server bekommt einfach eine Adresse von deinem DHCP Server.</p>
<dl class="accordion">
- <dt class="nat"><i class="icon-info-sign"></i> Wenn die Maschine nicht von aussen erreichbar sein soll kannst du das ändern, auf NAT.</dt>
+ <dt class="nat blue"><i class="icon-info-sign"></i> Wenn die Maschine nicht von aussen erreichbar sein soll kannst du das ändern, auf NAT.</dt>
<dd class="nat">
<div class="picture maxwidth600 pic1"></div>
<p>Jetzt sind alle Services auf dem Ubuntu Server nur noch &uuml;ber localhost und den Ports die du in der Port-Weiterleitung vergeben hast erreichbar.</p>
@@ -106,7 +106,7 @@
<li>Git - git add remote virtualbox ssh://ubuntu@IPADRESS/var/www/Symfony</li>
</ul>
<dl class="accordion">
- <dt class="connection"><i class="icon-info-sign"></i> Wie Verbinde ich mich zum Server?</dt>
+ <dt class="connection blue"><i class="icon-info-sign"></i> Wie Verbinde ich mich zum Server?</dt>
<dd class="connection">
<p>in Ubuntu einfach mit <b>Ctrl+l</b> die oben genannte Adresse eingeben</p>
<div class="picture maxwidth600 pic2 border"></div>
@@ -127,9 +127,9 @@
</dd>
</dl>
<dl class="accordion">
- <dt class="mysql"><i class="icon-info-sign"></i> Wie kann ich die MySQL Datenbank von Aussen erreichen?</dt>
+ <dt class="mysql blue"><i class="icon-info-sign"></i> Wie kann ich die MySQL Datenbank von Aussen erreichen?</dt>
<dd class="mysql">
- <p>Wenn du dich mit MySQL Workbench oder anderen Tools zum Server verbinden willst musst du Ihn vorher <a href="https://support.nbiserv.de/index.php?/Knowledgebase/Article/View/73/0/wie-kann-ich-meinen-mysql-server-von-extern-erreichbar-machen"> noch konfigurieren</a>. Verbinde dich mit SSH zum Sever:</p>
+ <p>Wenn du dich mit MySQL Workbench oder anderen Tools zum Server verbinden willst, musst du Ihn vorher <a href="https://support.nbiserv.de/index.php?/Knowledgebase/Article/View/73/0/wie-kann-ich-meinen-mysql-server-von-extern-erreichbar-machen"> noch konfigurieren</a>. <br>Log dich zu erst per SSH auf dem Sever ein:</p>
<code>ssh ubuntu@192.168.xx.xx</code>
<p>Dann rufe die MySQL Konfigurationsdatei auf</p>
<code>sudo vim /etc/mysql/my.cnf</code>
@@ -146,8 +146,9 @@
mysql> grant all on symfony.* to 'root' identified by 'mypassword';
mysql> flush privileges;
quit;
-</pre> <p>und neustarten.</p>
+</pre> <p>und neustarten.</p>
<code>sudo service mysql restart</code>
+ <p>Fertig.</p>
</dd>
</dl>
</dd>
@@ -190,7 +191,7 @@
<li>MySQl = 3306</li>
<li>PostgreSQL = 5432</li>
</ul>
- <p>Wenn die Zugriffsrechte in <b>Symfony/app/config/parameters.ini</b> stimmen werden die Datenbankrelationen automatisch von der web GUI aktualisiert.</p>
+ <p>Wenn die Zugriffsrechte von <b>Symfony/app/config/parameters.ini</b> stimmen werden die Datenbankrelationen automatisch von der web GUI aktualisiert.</p>
</section>
<section id="git">
@@ -225,7 +226,7 @@
<span classs="p">/vendor/</span>
<span classs="p">/app/config/parameters.ini</span>
</pre>
- <p>Kopiere das File einfach in den <b>/Symfony</b> Ordner.</p>
+ <p>Kopiere das File einfach in den <b>Symfony/</b> Ordner.</p>
<p>Danach kannst du das Git Repository anlegen.</p>
<pre>
<span>Symfony$ git init</span>
@@ -239,17 +240,19 @@
<p>Erzeuge zu erst ein Datenbank File, dies sollte mühelos funktionieren wenn die <b>Symfony/app/config/parameters.ini</b> Datei stimmt.</p>
<code>Symfony$ php app/console doctrine:database:create</code>
<br>
- <h5 class="margintop20"><i class="icon-info-sign"></i> das funktioniert nicht !??</h5>
- <p class="marginleft20px">Falls du über die Symfony-Console aus irgend einem Grund die Datenbank nicht anlegen kannst, muss das schnell manuel erledigt werden.</p>
+ <dl class="accordion">
+ <dt class="margintop20 info1 blue"><i class="icon-info-sign"></i> das funktioniert nicht !??</dt>
+ <dd class="marginleft20px info1">
+ <p>Falls du über die Symfony-Console aus irgend einem Grund die Datenbank nicht anlegen kannst, muss das schnell manuel erledigt werden.</p>
<pre class="marginleft20px">
mysql -u root -p
mysql> create database symfony;
mysql> exit;
sudo service mysql restart
-</pre>
- <p>Als nächstes generierst du ein <a href="http://symfony.com/doc/master/glossary.html#term-bundle">Bundle</a> in dem deine Aktivitäten stattfinden sollen.
+</pre> </dd>
+ <p>Als nächstes generierst du ein <a href="http://symfony.com/doc/master/glossary.html#term-bundle">Bundle</a> in dem deine Aktivitäten statt finden sollen.
<br>Bundles sind quasi Module, die es ermöglichen Aufgaben die sich ständig wiederolen, wie eine API Connection zu Twitter, in eigene Bereiche auszulagern und später eventuell in einem anderen Symfony Projekt wieder zu verwenden.</p>
- <p>Versuche <a href="http://symfony.com/doc/master/cookbook/bundles/best_practices.html">sprechende Namen</a> f&uuml;r die Bundles und deren Namespace in dem sie sich befinden zu benutzen</p>
+ <p>Versuche <a href="http://symfony.com/doc/master/cookbook/bundles/best_practices.html">sprechende Namen</a> f&uuml;r die Bundles und deren Namespace in dem sie sich befinden zu benutzen.</p>
<p>Der Namespace k&ouml;nnte z.B. der Name der Firma sein f&uuml;r die du das Symfony Projekt erstellst, wie <b>Encom</b> oder <b>Cyberdyn</b>.</p>
<p>Der Bundlename s&ouml;llte die T&auml;tigkeit beschreiben die das Bundle ausf&uuml;hrt, wie <b>Encom/TwitterApiConnectorBundle</b> oder <b>Cyberdyn/UserManagementBundle</b>.</p>
<br>
@@ -273,15 +276,15 @@ <h5 class="margintop20"><i class="icon-info-sign"></i> das funktioniert nicht !?
<br>
<br>
- <p><a href="http://www.doctrine-project.org/projects/orm.html">Doctrine</a> kann das Gesamte <a href="http://de.wikipedia.org/wiki/Objektrelationale_Abbildung"> ORM</a> für uns erstellen:</p>
+ <p>Die Klassen die die Tabellen abbilden sollen, müssen wir nicht von Hand schreiben. <br><a href="http://www.doctrine-project.org/projects/orm.html">Doctrine</a> kann das Gesamte <a href="http://de.wikipedia.org/wiki/Objektrelationale_Abbildung"> ORM</a> für uns mit einem Onliner erstellen:</p>
<pre class="highlight">
Symfony$ php app/console doctrine:generate:entity --entity=<span class="s1">"YourCompanyRestaurantBundle:Restaurant"</span> --fields=<span class="s1">"name:string(255) startuptime:time location:string(255) description:text"</span><br>
Symfony$ php app/console doctrine:generate:entity --entity=<span class="s1">"YourCompanyRestaurantBundle:Rating"</span> --fields=<span class="s1">"day:date rating:integer price:float delivertime:time"</span>
</pre>
<p>Doctrine hat uns jetzt alle nötigen Entitys im <b>Symfony/src/YourCompany/RestaurantBundle/Entity</b> Verzeichnis erstellt.</p>
- <p>F&uuml;r Projekte die mehrere Interfaces besitzen sollen (iPhone,Web,API,whatever), bietet es sich an den Datenbankzugriffskram in ein eigens Bundle zu stecken, um Ihn im iPhone,Web und API Bundle nicht immer wieder neu definieren zu m&uuml;ssen.</p>
+ <p>F&uuml;r Projekte die mehrere Interfaces besitzen sollen (iPhone, Web, API, whatever), bietet es sich an den Datenbankzugriffskram in ein eigens Bundle zu stecken, um Ihn im iPhone, Web und API Bundle nicht immer wieder neu definieren zu m&uuml;ssen.</p>
- <p>Man kann auch das ORM von einer <a href="http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html"> bereits bestehenden Datenbank</a> erzeugen.</p>
+ <p><i class="icon-info-sign"></i> Man kann auch das ORM von einer <a href="http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html"> bereits bestehenden Datenbank</a> erzeugen.</p>
</section>
<section id="relations">
<h2>Relations erstellen</h2>
@@ -293,12 +296,14 @@ <h5 class="margintop20"><i class="icon-info-sign"></i> das funktioniert nicht !?
Also <a href="http://nubyonrails.com/tools/pluralize">pluralisieren</a> wir den Namen des Propertys -> <b>$ratings</b>.</p>
<p>Erstelle die Relations in deiner neuen Entity Klasse nach folgendem Muster:</p>
<pre class="highlight">
-<span class="sd">// Symfony/src/YourCompanyBundle/Restaruant/Entity/<b>Restaurant</b>.php</span>
+<span class="sd">// Symfony/src/YourCompany/RestaurantBundle/Restaruant/Entity/<b>Restaurant</b>.php</span>
-<span class="k">use</span> Doctrine\Common\Collections\ArrayCollection;
+<span class="k">use</span> Doctrine\Common\Collections\ArrayCollection
<span class="k">class</span> Restaurant
{
+ .....
+
<span class="sd">/**
* @ORM\<b>OneToMany</b>(targetEntity="Rating", mappedBy="restaurant")
*/ </span>
@@ -312,7 +317,7 @@ <h5 class="margintop20"><i class="icon-info-sign"></i> das funktioniert nicht !?
</pre>
<p>Und das selbe umgekehrt in das Rating Entity was von Restaurant abh&auml;ngt:</p>
<pre class="highlight">
-<span class="sd">// Symfony/src/YourCompanyBundleName/Restaruant/Entity/<b>Rating</b>.php
+<span class="sd">// Symfony/src/YourCompany/RestaurantBundle/Restaruant/Entity/<b>Rating</b>.php
/**
* @ORM\<b>ManyToOne</b>(targetEntity="Restaurant", inversedBy="ratings")
@@ -321,17 +326,18 @@ <h5 class="margintop20"><i class="icon-info-sign"></i> das funktioniert nicht !?
</span>
<span class="k">protected</span> $restaurant;
</pre>
- <p>Nachdem du die Relationen konfiguriert hast, musst du noch die Getter- und Settermethoden f&uuml;r alle Property Atribute erstellen.
+ <p>Nach dem du die Relationen konfiguriert hast, musst du noch die Getter- und Settermethoden f&uuml;r alle Property Attribute erstellen.
Das k&ouml;nnen wir ebenfalls von Doctrine automatisch erledigen lassen.</p>
<code>Symfony$ php app/console doctrine:generate:entities YourCompany</code>
+ <p>Doctrine sucht jetzt in <b>allen Bundles</b> die sich in <b>Symfony/src/YourCompany</b> befinden, in deren <b>Entity/</b> Ordner, nimmt sich die PHP Klassen und generiert Setter- und Gettermethoden für deren Properties.</p>
<p>Jetzt schreiben wir dieses Schema noch in die Datenbank.</p>
<code>Symfony$ php app/console doctrine:schema:update --force</code>
<p>Und fertig.</p>
<code>Symfony$ git commit -a -m "DB relations are safe"</code>
</section>
<section id="templates">
<h1>Einfügen der Templates</h1>
- <p>Kopiere alle Templates (Bootstrap CSS und JQuery Javascript Zeug) in <b>/Symfony/src/YourCompany/RestaurantBundle/Resources/public</b> und erstelle die Symlinks im <b>/web</b> Verzeichnis.</p>
+ <p>Kopiere alle Templates (Bootstrap CSS und JQuery Javascript Zeug) in <b>/Symfony/src/YourCompany/RestaurantBundle/Recources/public</b> und erstelle die Symlinks im <b>/web</b> Verzeichnis.</p>
<code>Symfony$ php app/console assets:install --symlink web</code>
<p>Die Symlinks erscheinen dann im <b>Symfony/web/bundles/yourcompanyrestaurant</b> Ordner. Der <b>/web</b> Ordner ist als einziger &uuml;ber den Webserver zu ereichen.</p>
<p>Als n&auml;chstes sagen wir Symfony wo f&uuml;r alle Bundles die Stylesheets und Javascripts zu finden sind.
@@ -346,10 +352,13 @@ <h5 class="margintop20"><i class="icon-info-sign"></i> das funktioniert nicht !?
<<span class="c1">script</span> src=<span class="s1">"{{ asset_url }}"</span><<span class="c1">/script</span>>
{% <span class="k">endjavascripts</span> %}
</pre>
- <h5 class="margintop20"><i class="icon-info-sign"></i>
- Achtung! Die inkludierten Dateien werden so alphabetisch von Symfony eingefügt</h5>
- <p class="marginleft20px">Das kann zu Problemen führen wenn man eigene Javascript oder CSS Dateien verwendet, die z.B Bootstrap CSS Klassen überschreiben, oder JQuery Funktionen aufrufen. In diesem Fall müsste man per Hand die Includes so sortieren das sie in der richtigen Reihenfolge geladen werden.</p>
-
+ <dl class="accordion">
+ <dt class="margintop20 info2 blue">
+ <p><i class="icon-info-sign"></i>
+ Achtung! Die inkludierten Dateien werden so alphabetisch von Symfony eingefügt</p>
+ </dt>
+ <dd class="marginleft20px info2">Das kann zu <b>Problemen</b> führen wenn man <b>eigene</b> Javascript oder CSS <b>Dateien verwendet</b>, die z.B Bootstrap CSS Klassen überschreiben, oder JQuery Funktionen aufrufen. In diesem Fall müsste man per Hand die Includes so sortieren das sie in der richtigen Reihenfolge geladen werden.</dd>
+ </dl>
<p>Und fertig.</p>
<code>Symfony$ git commit -a -m "assatics are safe"</code>
<br>
@@ -364,7 +373,7 @@ <h5 class="margintop20"><i class="icon-info-sign"></i>
<h5 class="margintop20"><i class="icon-info-sign"></i> CSS background-image Bug</h5>
<p class="marginleft20px">Background-images in CSS k&oumlnnen nicht &uuml;ber die @Bundlename Notation aufgerufen werden.
<br>Behelfsm&auml;ssig funktioniert aber der relative Pfad.</p>
- <code class="highlight marginleft20px"><span class="k">background-image</span>: url(<span class="s1">"../../bundles/yourcompanyrestaurant/img/glyphicons-halflings.png"</span>);</code>
+ <code class="highlight marginleft20px"><span class="k">background-image</span>: url(<span class="s1">"../../bundles/YourcompanyRestaurant/img/logo.png"</span>);</code>
<br><br>
<p>Bei Projekten die mehrere Interfaces haben w&uuml;rde es Sinn machen ein <b>LayoutBundle</b> zu erstellen was nur f&uuml;r das Layout zust&auml;ndig ist.</p>
</section>
View
6 script/app.js 100644 → 100755
@@ -15,6 +15,12 @@ $(document).ready(function()
$("dt.mysql").click(function () {
$("dd.mysql").slideToggle();});
+
+ $("dt.info1").click(function () {
+ $("dd.info1").slideToggle();});
+
+ $("dt.info2").click(function () {
+ $("dd.info2").slideToggle();});
/* event handling for mobile view - screen resolution < 640px*/
View
@@ -57,6 +57,10 @@ pre
{
margin-left:20px;
}
+.blue:hover
+{
+ color:#0088cc;
+}
.nonstyletype
{
list-style-type:none;

0 comments on commit 3f21900

Please sign in to comment.