Lieblings-Kohana-Tipps und -Features? [closed]

Lesezeit: 5 Minuten

Inspiriert von den anderen Community-Wikis bin ich daran interessiert, mehr über die weniger bekannten Tipps, Tricks und Funktionen von Kohana zu erfahren.

  • Bitte geben Sie pro Antwort nur einen Tipp an.
  • Fügen Sie bei Bedarf Kohana-Versionen hinzu.

Das ist ein Community-Wiki.

Generieren von Form::select()-Optionen aus dem Datenbankergebnis

Kohana 3.1 und 3.0

$options = ORM::factory('model')
 ->order_by('title','ASC')
 ->find_all()
 ->as_array('id','title');

$select = Form::select('name', $options);

Es sollte beachtet werden, dass dies nicht auf das ORM beschränkt ist und für alle Datenbankergebnisse verwendet werden kann (sie alle unterstützen as_array). Siehe die Datenbankergebnisse Informationen für weitere Details.

Wenn Sie eine Standardoption hinzufügen möchten:

$options = Arr::merge(array('Please select a value.'), $options);

Zuletzt ausgeführte Abfrage anzeigen

Kohana 3.1 und 3.0

echo Database::instance()->last_query

Entnommen aus In Kohana 3, wie finden Sie Fehler heraus, die während einer Abfrage gemacht wurden?.

Legen Sie die Kohana::$ Umgebung fest

Fügen Sie diese Zeilen in Ihre ein .htaccess:

SetEnvIf SERVER_ADDR "^(127\.0\.0\.1|::1)$" KOHANA_ENV=development
SetEnvIf SERVER_ADDR "^((?!127\.0\.0\.1|::1).)*$" KOHANA_ENV=production

Wenn Sie sich jetzt auf localhost befinden, befinden Sie sich im Entwicklungsmodus, andernfalls im Produktionsmodus

Bearbeiten: Unterstützung für IPv6 hinzugefügt

Der Unterschied zwischen this->request->route->uri() und this->request->uri() (Kohana 3)

// Current URI = welcome/test/5 
// Using default route ":controller/:action/:id"

// This returns "welcome/test/5"
echo $this->request->uri(); 

// This returns "welcome/test1/5"
echo $this->request->uri(array( 'action' => 'test1' )); 

// This returns "welcome/index"
echo $this->request->route->uri();

// This returns "welcome/test1"
echo $this->request->route->uri(array( 'action' => 'test1' ));

Wie Sie sehen, verwendet $this->request->route->uri() aktuelle Routenvorgaben (id ist null), während $this->request->uri() aktuelle URI-Segmente anwendet.

Fügen Sie mithilfe von ORM Daten zu Pivot-Tabellen hinzu

ORMs add Die Funktion akzeptiert einen dritten Parameter, mit dem Sie zusätzliche Daten angeben können, die in der 1Pivot-Tabelle1 gespeichert werden sollen.

Wenn beispielsweise ein Benutzer viele Rollen und eine Rolle viele Benutzer hat (über eine Tabelle mit dem Namen 1roles_users1), können Sie Informationen in der 1pivot-Tabelle1 speichern, indem Sie ein Array von Spaltenschlüsseln und Datenwerten als drittes Argument an die übergeben add Methode.

Kohana 3.1

Nicht unterstützt. Die Alternative wäre, die zu laden pivot table und fügen Sie die Daten wie bei jeder anderen Tabelle hinzu.

Kohana 3.0

$user->add('role', $role, array('date_role_added' => time()));

wo $role ist ORM::factory('role', array('name' => 'user'));

  • Schon was neues gelernt. Danke.

    – Der Pixel-Entwickler

    8. März 2010 um 20:29 Uhr

  • Sie können das auch tun, indem Sie $_created_column im Modell definieren 🙂

    – Kem

    1. August 2010 um 12:07 Uhr

  • @ Kemo; Nicht auf Pivot-Tabellen (es sei denn, Sie haben ein Modell dafür definiert). @Dusan; Wie lesen Sie die Daten aus dem Pivot zurück? Ich habe keine Möglichkeit gefunden, dies mit ORM zu tun.

    – Lukas

    5. März 2011 um 6:54 Uhr


  • @Luke $table->pivots->select(‘pivots.field’)->find_all() ? 🙂

    – Kem

    5. März 2011 um 14:27 Uhr

  • @Luke Ich habe auch keine Möglichkeit gefunden, diese Daten mit ORM zurückzulesen =(

    – dusan

    5. März 2011 um 15:54 Uhr

Deaktivieren Sie auto_rendering für AJAX-Anfragen

Bei diesen Codebeispielen wird davon ausgegangen, dass Sie vom Vorlagencontroller aus erweitern.

Kohana 3.1

public function before()
{
    parent::before();

    if (Request::current()->is_ajax())
    {
      $this->auto_render = FALSE;
    }
}

Kohana 3.0

public function before()
{
    parent::before();

    if (Request::$is_ajax)
    {
      $this->auto_render = FALSE;
    }
}

  • Schon was neues gelernt. Danke.

    – Der Pixel-Entwickler

    8. März 2010 um 20:29 Uhr

  • Sie können das auch tun, indem Sie $_created_column im Modell definieren 🙂

    – Kem

    1. August 2010 um 12:07 Uhr

  • @ Kemo; Nicht auf Pivot-Tabellen (es sei denn, Sie haben ein Modell dafür definiert). @Dusan; Wie lesen Sie die Daten aus dem Pivot zurück? Ich habe keine Möglichkeit gefunden, dies mit ORM zu tun.

    – Lukas

    5. März 2011 um 6:54 Uhr


  • @Luke $table->pivots->select(‘pivots.field’)->find_all() ? 🙂

    – Kem

    5. März 2011 um 14:27 Uhr

  • @Luke Ich habe auch keine Möglichkeit gefunden, diese Daten mit ORM zurückzulesen =(

    – dusan

    5. März 2011 um 15:54 Uhr

Wartbare Strecken

Anstatt Ankerpositionen in Ihrem HTML und PHP fest zu codieren, ist es eine gute Idee, das Routing umzukehren. Das bedeutet im Wesentlichen, dass Sie Routenstandorte definieren und diese dann verwenden. Wenn Sie jemals den Standort ändern müssen, geschieht dies an einem Ort und nicht an Hunderten.

Routen können überall definiert werden, aber es ist eine gute Praxis, sie in den Anwendungs-Bootstrap oder Ihren Modul-Bootstrap (init.php) einzufügen.

Sie sind wie folgt eingestellt:

Route::set('name', '<controller>(/<action>)', array('action' => 'login|logout');
  1. Routenname
  2. Der URL-Pfad, mit dem abgeglichen werden soll.
  3. Ein regulärer Ausdruck, um zu begrenzen, was die <part> wird gegen gematcht.

Wenn ein Teil von Klammern umgeben ist, ist dieser Teil optional. Wenn ein Benutzer kein Teil bereitgestellt hat und Sie einen Standardwert bereitstellen möchten, verwenden Sie die defaults-Methode, um Werte anzugeben.

->defaults(array('action' => 'login'));

Kohana 3.1 und 3.0

Der folgende Code wird jetzt verwendet, um umkehrbare Routen zu haben. Der URL-Pfad kann aktualisiert werden und alle Ihre URLs sollte arbeiten wie bisher.

Route::url('name', array('controller' => 'user', 'action' => 'login'));

  • vielleicht eine andere Idee: URL::site(Route::get(‘route_name’)->uri(array(‘controller’ => ‘somecontroller’, ‘arg’ => ‘somearg’)));

    – SpadXIII

    1. August 2010 um 11:57 Uhr

  • Oder vielleicht Route::url('route_name', array('param' => 'value')); Ich würde auch empfehlen, die Links an Ihre Ansicht weiterzugeben, anstatt zu erwarten, dass die Ansicht sie erstellt – hilft, die Logik aus der Ansicht herauszuhalten.

    – Matt

    4. September 2010 um 15:41 Uhr

1333450cookie-checkLieblings-Kohana-Tipps und -Features? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy