Heim  >  Artikel  >  Backend-Entwicklung  >  Ressourcenfreigabe zum Aufbau eines vollständigen Blogsystems mit dem Yii2-Framework

Ressourcenfreigabe zum Aufbau eines vollständigen Blogsystems mit dem Yii2-Framework

黄舟
黄舟Original
2017-09-01 09:49:082487Durchsuche

Yii ist eine der Best Practices für die schnelle Entwicklung von PHP. Seine umfangreichen Erweiterungsressourcen und schnellen Entwicklungsideen werden von Unternehmen zunehmend bevorzugt und zunehmend genutzt. Dieser Kurs verwendet das Blog-System als Beispiel, um zu beschreiben, wie yii2.0 für die praktische Entwicklung verwendet wird, und um die praktische Anwendung von yii2.0 zu erlernen. Der Inhalt ist in drei Teile unterteilt: Grundkonfiguration, Blog-Frontend und Blog-Backend.

Ressourcenfreigabe zum Aufbau eines vollständigen Blogsystems mit dem Yii2-Framework

Adresse für die Videowiedergabe: http://www.php.cn/course/266.html

Der Unterrichtsstil des Lehrers:

Die Vorträge des Lehrers sind einfach und ausführlich, klar in der Struktur, werden Schicht für Schicht analysiert, ineinandergreifend, streng in der Argumentation, streng in der Struktur und im Gebrauch Die logische Kraft des Denkens, um die Aufmerksamkeit der Schüler zu erregen. Nutzen Sie die Vernunft, um den Unterrichtsprozess im Klassenzimmer zu steuern. Durch das Zuhören der Vorträge des Lehrers lernen die Schüler nicht nur Wissen, sondern erhalten auch eine Denkschulung und werden auch von der strengen akademischen Haltung des Lehrers beeinflusst und infiziert

Der schwierigere Punkt in diesem Video ist der Rahmen des Yii-Framework-Blogsystems Konfigurierte Routen:

Grundlegende Routen

Die überwiegende Mehrheit der Routen für Ihre Anwendung befindet sich im app/routes.PHP-Datei definiert in. Die einfachste Route in Laravel besteht aus einem URI und einem Abschlussaufruf.

Grundlegende GET-Route

Der Code lautet wie folgt:

Route::get('/', function(){return 'Hello World';});

Grundlegende POST-Route

Der Code lautet wie folgt :

Route::post('foo/bar', function()
{
return 'Hello World';
});


Registrieren Sie eine Route, um auf alle HTTP-Methoden zu reagieren

Der Code lautet wie folgt:

Route::any('foo', function()
{
   return 'Hello World';
});


Erzwingen eine Route, auf die über HTTPS zugegriffen werden soll

Der Code lautet wie folgt:

Route::get('foo', array('https', function()
{
    return 'Must be over HTTPS';
}));


Oft müssen Sie URLs basierend auf Routen generieren. Dies können Sie tun, indem Sie die URL::to-Methode:

Der Code lautet wie folgt:

$url = URL::to('foo');

Routing-Parameter

Der Code lautet wie folgt:

Route::get('user/{id}', function($id)
{
return 'User '.$id;
});


Optionaler Routing-Parameter

Code wie folgt:

Route::get('user/{name?}', function($name = null)
{
return $name;
});


Optionale Routing-Parameter mit Standardwerten

Der Code lautet wie folgt:

Route::get('user/{name?}', function($name = 'John')
{
return $name;
});


Mit regulärem Ausdruck Der formelbeschränkte Routencode

lautet wie folgt:

Route::get('user/{name}', function($name)
{
//
})
->where('name', '[A-Za-z]+');
Route::get('user/{id}', function($id)
{
//
})
->where('id', '[0-9]+');

Routenfilter

Der Routingfilter bietet eine einfache Methode, um den Zugriff auf bestimmte Routen einzuschränken. Dies ist nützlich, wenn Sie Bereiche Ihrer Site erstellen müssen, die eine Authentifizierung erfordern. Das Laravel-Framework enthält einige Routing-Filter, wie z. B. Authentifizierungsfilter, auth.basic-Filter, Gastfilter und CSRF-Filter. Sie werden in der Datei app/filters.php gespeichert.

Definieren Sie einen Routing-Filter

Der Code lautet wie folgt:

Route::filter('old', function()
{
if (Input::get(&#39;age&#39;) < 200)
{
return Redirect::to(&#39;home&#39;);
}
});


Wenn eine Antwort von einem Routing-Filter zurückgegeben wird, ist die Antwort Da es sich um eine Antwort auf diese Anfrage handelt, wird die Route nicht ausgeführt und alle Nachfilter, die sich auf diese Route beziehen, werden ebenfalls abgebrochen.

Geben Sie einen Routenfilter für eine Route an

Der Code lautet wie folgt:

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;old&#39;, function()
{
return &#39;You are over 200 years old!&#39;;
}));


Geben Sie mehrere Routenfilter für eine Route an

Der Code lautet wie folgt:

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;auth|old&#39;, function()
{
return &#39;You are authenticated and over 200 years old!&#39;;
}));


Routenfilterparameter angeben

Der Code lautet wie folgt:

Route::filter(&#39;age&#39;, function($route, $request, $value)
{
//
});
Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;age:200&#39;, function()
{
return &#39;Hello World&#39;;
}));


Wenn das Routing gefiltert wird, erhält der Server die Antwort als dritten Parameter $response:

Der Code lautet wie folgt:

Route::filter(&#39;log&#39;, function($route, $request, $response, $value)
{
//
});


Das Muster der Basis Routing-Filter

Sie möchten möglicherweise Filter für eine Reihe von Routen basierend auf URI angeben.

Der Code lautet wie folgt:

Route::filter(&#39;admin&#39;, function()
{
//
});
Route::when(&#39;admin/*&#39;, &#39;admin&#39;);


Im obigen Beispiel wird der Admin-Filter auf alle Routen angewendet, die mit admin/ beginnen. Das Sternchen fungiert als Platzhalterzeichen und passt zu allen Zeichenkombinationen.

Sie können Musterfilter auch durch Angabe von HTTP-Methoden einschränken:

Der Code lautet wie folgt:

Route::when(&#39;admin/*&#39;, &#39;admin&#39;, array(&#39;post&#39;));

Filterklasse

Für erweiterte Filter , Sie können eine Klasse anstelle einer Abschlussfunktion verwenden. Da es sich bei der Filterklasse um einen IoC-Container handelt, der sich außerhalb der Anwendung befindet, können Sie die Abhängigkeitsinjektion im Filter verwenden, um das Testen zu vereinfachen.

Definieren Sie eine Filterklasse

Der Code lautet wie folgt:

class FooFilter {
public function filter()
{
// Filter logic...
}
}


Registrieren Sie einen klassenbasierten Filter

Der Code lautet wie folgt:

Route::filter(&#39;foo&#39;, &#39;FooFilter&#39;);

Benannte Routen

Benannte Routen erleichtern die Angabe von Routen beim Generieren von Sprüngen oder URLs. Sie können einen Namen für die Route wie folgt angeben:

Der Code lautet wie folgt:

Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, function()
{
//
}));

Sie können auch einen Routennamen für die Controller-Methode angeben:

Der Code lautet wie folgt:

Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, &#39;uses&#39; => &#39;UserController@showProfile&#39;));

Jetzt verwenden Sie den Routennamen beim Generieren von URLs oder Sprüngen:

Der Code lautet wie folgt:

$url = URL::route(&#39;profile&#39;);
$redirect = Redirect::route(&#39;profile&#39;);

Sie können die Methode currentRouteName verwenden, um den Namen einer Route abzurufen:

Der Code lautet wie folgt:

$name = Route::currentRouteName();

Routengruppe

Manchmal möchten Sie möglicherweise einen Filter auf eine Gruppe von Routen anwenden. Sie müssen nicht für jede Route Filter angeben, Sie können Routengruppen verwenden:

Der Code lautet wie folgt:

Route::group(array(&#39;before&#39; => &#39;auth&#39;), function()
{
Route::get(&#39;/&#39;, function()
{
// Has Auth Filter
});
Route::get(&#39;user/profile&#39;, function()
{
// Has Auth Filter
});
});

Subdomain-Routing

Laravel Routing kann auch Wildcard-Subdomain-Namen verarbeiten und Wildcard-Parameter aus dem Domain-Namen erhalten:

Subdomain-Route registrieren

Der Code lautet wie folgt:

Route::group(array(&#39;domain&#39; => &#39;{account}.myapp.com&#39;), function()
{
Route::get(&#39;user/{id}&#39;, function($account, $id)
{
//
});
});

Route Präfix

Eine Gruppe von Routen kann der Routinggruppe ein Präfix hinzufügen, indem sie die Präfixoption im Attributarray verwendet:

Ein Präfix zur Routinggruppe hinzufügen

Der Code lautet wie folgt:

Route::group(array(&#39;prefix&#39; => &#39;admin&#39;), function()
{
Route::get(&#39;user&#39;, function()
{
//
});
});

Routing-Modellbindung

  模型绑定提供了一个简单的方法向路由中注入模型。比如,不仅注入一个用户的 ID,您可以根据指定的 ID 注入整个用户模型实例。首先使用 Route::model 方法指定所需要的模型:

为模型绑定一个变量

 代码如下:

Route::model(&#39;user&#39;, &#39;User&#39;);


然后, 定义一个包含 {user} 参数的路由:

 代码如下:

Route::get(&#39;profile/{user}&#39;, function(User $user)
{
//
});

  因为我们已经绑定 {user} 参数到 User 模型,一个 User 实例将被注入到路由中。因此,比如一个 profile/1 的请求将注入一个 ID 为 1 的 User 实例。

  注意: 如果在数据库中没有找到这个模型实例,将引发404错误。

  如果您希望指定您自己定义的没有找到的行为,您可以为 model 方法传递一个闭包作为第三个参数:

代码如下:

Route::model(&#39;user&#39;, &#39;User&#39;, function()
{
throw new NotFoundException;
});


  有时您希望使用自己的方法处理路由参数,可以使用 Route::bind 方法:

代码如下:

Route::bind(&#39;user&#39;, function($value, $route)
{
return User::where(&#39;name&#39;, $value)->first();
});


引发404错误

  有两种方法在路由中手动触发一个404错误。首先,您可以使用 App::abort 方法:

代码如下:

App::abort(404);

其次,您可以抛出一个 Symfony\Component\HttpKernel\Exception\NotFoundHttpException 的实例。

更多关于处理404异常和为这些错误使用使用自定义响应的信息可以在 错误 章节中找到。

路由至控制器

Laravel 不仅允许您路由至闭包,也可以路由至控制器类,甚至允许创建 资源控制器.

Das obige ist der detaillierte Inhalt vonRessourcenfreigabe zum Aufbau eines vollständigen Blogsystems mit dem Yii2-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn