Ich habe versucht, selbst ein kleines Projekt durchzuführen (mit dem Thinkphp-Framework), und bin auf ein Problem bei der Vorlagenzuweisung gestoßen: In jeder Vorlage gibt es einen Header
public function header() {
<code> $value=$name; $this->assign('lo_id',$value); }</code>
Es ist mir unmöglich, diese Methode einmal auf jedem Template-Controller zu schreiben. Natürlich kann ich diese Methode nicht auf dem übergeordneten Klassencontroller des Template-Controllers platzieren:
Namespace HomeController;
ThinkController verwenden;
Klasse IndexController erweitert Controller
{
public function index()
{
$this->display("url");
}
🎜>Es ist alles so, wie kann ich die obige Variable {$lo_id} an jede Vorlage ausgeben?
Oder vielleicht habe ich die Anforderungen nicht klar ausgedrückt – das heißt, jede Vorlage kann eine Variable ausgeben
Antwortinhalt:
Ich habe versucht, selbst ein kleines Projekt durchzuführen (mit dem Thinkphp-Framework), und bin auf ein Problem bei der Vorlagenzuweisung gestoßen: In jeder Vorlage gibt es einen Header , nichts Falsches. Aber hier kommt das Problem. Es gibt eine Variable im Header, die an jede Vorlage ausgegeben werden muss, die darauf verweist. Diese Variable wird von einer Methode im Controller generiert: public function header() {
<code> $value=$name;
$this->assign('lo_id',$value);
}</code>
Nach dem Login kopierenEs ist mir unmöglich, diese Methode einmal auf jedem Template-Controller zu schreiben. Natürlich kann ich diese Methode nicht auf dem übergeordneten Klassencontroller des Template-Controllers platzieren: Namespace HomeController;
ThinkController verwenden;
Klasse IndexController erweitert Controller{
<code>public function index()
{
$this->display("url");
}🎜>Es ist alles so, wie kann ich die obige Variable {$lo_id} an jede Vorlage ausgeben?</p>
<p>Oder vielleicht habe ich die Anforderungen nicht klar ausgedrückt – das heißt, jede Vorlage kann eine Variable ausgeben <br>
<br>
</p>Fügen Sie die gemeinsamen Teile in die übergeordnete Klasse ein und die Unterklassen können sie erben<p class="answer fmt" data-id="1020000007296915">
</p>
<p>
</p>
<pre class="brush:php;toolbar:false"><code><?php
namespace HomeController;
use ThinkController;
class BaseController extends Controller{
public function header(){
$this->display("url");
}
}
</code>
Nach dem Login kopieren
<code><?php
namespace HomeController;
use ThinkController;
use Home/BaseController
class IndexController extends BaseController{
public function index(){
$this->header();
}
}
</code>
Nach dem Login kopieren1. Jede Seite verfügt über die Methode $this->assign('data',$data); Hängen Sie einfach diese Variable an. Es ist nicht erforderlich, eine separate Methode zu schreiben.
2. Schreiben Sie eine Basisklasse. Inherit Controller, implementieren Sie diese Methode, und dann erbt Ihre Seite die Basisklasse, sodass Sie sie nicht wiederholt schreiben müssen
(Codebeispiele wurden im ersten Stock angegeben)