3 Stimmen

Cakephp Überschreibung HtmlHelper::link

Ich möchte HtmlHelper::link()-Methode einrichten, so dass die Standardoptionen Array Escape = false haben.

Wie kann ich dies erreichen, ohne die Kernklasse zu ändern?

OBS: Ich habe die Formulareingabe bereits bereinigt, so dass dies wohl kein Problem sein wird.

Vielen Dank im Voraus.

4voto

brownpl Punkte 73

Torte 2.1.5

Ich habe dies gerade umgesetzt und möchte auf einige Dinge hinweisen:

Ihr benutzerdefinierter HTML-Helper sollte HTML-Helper erweitern (und vergessen Sie nicht, die HTML-Helper-Klasse einzubinden)

App::uses('HtmlHelper', 'View/Helper');
class CustomHtmlHelper extends HtmlHelper {
   //yadda yadda
}

Außerdem sollte Ihr Aufruf in AppController nicht das Wort Helper enthalten:

'Html'=> array('className' =>'CustomHtml'),

3voto

powtac Punkte 39079

In Kuchen 2.0

Erstellen Sie Ihre OwnHelper-Klasse mit einer Link-Methode, die HtmlHelper erweitert, in AppController specify:

$helpers = array('Html' => array('className' => 'OwnHelper'));

über ADmad

2voto

dianovich Punkte 2278

Warum erstellen Sie nicht Ihren eigenen benutzerdefinierten Helfer und erstellen eine Methode, die den Link des HTMLHelpers mit den eingestellten Optionen zurückgibt?

http://book.cakephp.org/view/102/Including-other-Helpers

class MyHelper extends AppHelper {
  var $helpers = array('html');

  function linkNoEscape($title, $url)
    $options = array(); //set custom options, e.g. no escape 

    return $this->Html->link($title, $url, $options);
  }
}

2voto

contrebis Punkte 1239

Ich fühle mich nie wohl, wenn ich Methoden weiter oben in der Hierarchie (d.h. im AppHelper) überschreibe, weil es immer eine gute Chance gibt, dass man andere Helfer, die abhängig sind, kaputt macht.

Ich hoffe, dass ich bald einen Kommentar abgeben kann, anstatt unsinnige halbe Antworten zu geben!

Ebenfalls relevant: Ich habe gehört, dass es in CakePHP 2.0 möglich sein wird, Helpers, Komponenten usw. zu aliasieren. Z. B. möchten Sie die Ausgabe von HtmlHelper ändern, können Sie es mit Ihrer eigenen Version ersetzen, ohne alle Ihre Ansichtsvorlagen zu ändern.

0voto

dhofstet Punkte 9914

Sie könnten das Original kopieren HTMLHelper von cake/libs/view/helpers a app/views/helpers und ändern Sie die link() Methode dort.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X