Zend Framework 2 – doctrine: Umlautproblem

08. Juli 2014

Alle meine Tabellen und die Datenbank sind auf utf8_general_ci eingestellt, und dennoch tauchte plötzlich im ZF2 das Problem beim Speichern von Umlauten auf. Aus dem Eintrag “höhöhöhö” wurde in der Datenbank folgendes:
db

Eine Google Recherche brachte erstmal nichts, denn in der config der Datenbankverbindung war SET NAMES ‘UTF8’ bereits eingestellt. Da ich zum Speichern der Daten doctrine benutze (und ich traue doctrine nicht so ganz), habe ich in meiner Doctrine Konfiguration testhalber folgendes hinzugefügt:

  1. 'params' => array(
  2. 'host' => 'localhost',
  3. 'port' => '3306',
  4. 'dbname' => 'table_name',
  5. 'charset' => 'utf8' //<---- hier!
  6. ...

Und plötzlich gings!

Zend Framework 2 – mit annotationbuilder ein dropdown mit den Werten einer Entity anzeigen (mit einer ManyToOne Beziehung)

07. Juli 2014

Mit dem annotationbuilder generiere ich ein Formular basierend auf einer Entity:

  1. $text = new Text();
  2. $builder = new AnnotationBuilder( $entityManager);
  3. $form = $builder->createForm( $text );
  4. $form->setHydrator(new DoctrineHydrator($entityManager,'Backend\Entity\Text'));
  5. $form->bind($text);

Das einzige Problem war das Feld categoryId, das eine manyToOne Beziehung zu einer weiteren Entity namens TextCategory hat. Ich wollte, dass nur anhand der Annotations ein select mit den entsprechenden Werten (aus dem Feld “name” in TextCategory) angezeigt wird. Das geht so:

  1. /**
  2. * @var string $categoryId
  3. *
  4. * @ORM\ManyToOne(targetEntity="Backend\Entity\TextCategory", fetch="EAGER")
  5. * @ORM\JoinColumn(name="categoryId", referencedColumnName="id", nullable=false)
  6. * @Annotation\Type("DoctrineORMModule\Form\Element\EntitySelect")
  7. * @Annotation\Required({"required":"true" })
  8. * @Annotation\Filter({"name":"StripTags"})
  9. * @Annotation\Options({"label":"Class:", "property":"name", "target_class" : "Backend\Entity\TextCategory"})
  10. * @Annotation\Attributes({"value":"0"})
  11. *
  12. */
  13. private $categoryId;

Das Ergebnis ist geradezu berauschend gut.

Zend Framework 2 – annotationbuilder Formular im Nachhinein ändern

07. Juli 2014

Ich erstelle im Zend Framework 2 mit dem annotationbuilder ein Formular. Nun möchte ich aber im Nachhinein gewisse Elemente verstecken (z.B. für bestimmte eingeloggte User). Das geht so:

  1. $form->getElements()['thefieldname']->setAttribute('type', 'hidden');

CSS: 100% divs links und rechts vom content

02. Juli 2014

Mein Header Element soll 980px breit sein und natürlich zentriert. Links und rechts brauche ich DIVs die den Rest des Platzes ausfüllen. Das ganze wollte ich ohne Tables, ohne JS nur mit CSS lösen, damit das Endergebnis so aussieht:

HTML:

  1. <div id="header_wrap">
  2. <div id="header_left"></div>
  3. <div id="header">
  4. <div class="row">
  5. <div class="col-md-4"><img src="img/links.png" alt="schleife links"></a></div>
  6. <div class="col-md-5"></div>
  7. <div class="col-md-3"><img src="img/logo.png"></div>
  8. </div>
  9. </div>
  10. <div id="header_right"></div>
  11. </div>

und das CSS:

  1. #header_wrap{width:100%;display:table;height:150px;margin:40px 0 60px 0}
  2. #header_left{display:table-cell;width:auto;background:url('img/bg_header.png') left top repeat-x}
  3. #header_right{display:table-cell;background:url('img/bg_header.png') left bottom repeat-x}
  4. #header{display:table-cell;margin:0;width:980px}

Dürfte natürlich im IE8 und drunter nicht gehen, da muss man sich dann eine Sonderlösung überlegen.