Maison >développement back-end >tutoriel php >Partage de ressources sur la création d'un système de blog complet à l'aide du framework Yii2

Partage de ressources sur la création d'un système de blog complet à l'aide du framework Yii2

黄舟
黄舟original
2017-09-01 09:49:082547parcourir

Yii est l'une des meilleures pratiques pour le développement rapide de PHP. Ses riches ressources d'expansion et ses idées de développement rapide sont de plus en plus favorisées par les entreprises et de plus en plus utilisées. Ce cours prend le système de blog comme exemple pour décrire comment utiliser yii2.0 pour le développement pratique et apprendre l'application pratique de yii2.0. Le contenu est divisé en trois parties : configuration de base, front-end du blog et back-end du blog.

Partage de ressources sur la création dun système de blog complet à laide du framework Yii2

Adresse de lecture vidéo : http://www.php.cn/course/266.html

Le style d'enseignement de l'enseignant :

Les cours de l'enseignant sont simples et approfondis, de structure claire, analysés couche par couche, imbriqués, rigoureux dans l'argumentation, rigoureux dans la structure et l'utilisation le pouvoir logique de la pensée pour attirer l'attention des élèves. Force, utiliser la raison pour contrôler le processus d'enseignement en classe. En écoutant les cours de l'enseignant, les étudiants acquièrent non seulement des connaissances, mais reçoivent également une formation à la réflexion, et sont également influencés et infectés par l'attitude académique rigoureuse de l'enseignant

Le point le plus difficile de cette vidéo est le cadre du système de blog du framework Yii Routes configurées :

Routes de base

La grande majorité des routes de votre application seront dans le app/routes.PHP défini dans. L'itinéraire le plus simple dans Laravel consiste en un URI et un appel de fermeture.

Route GET de base

Le code est le suivant :

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

Route POST de base

Le code est le suivant :

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


Enregistrer une route pour répondre à toutes les méthodes HTTP

Le code est le suivant :

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


Forcer un itinéraire accessible via HTTPS

Le code est le suivant :

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


Souvent, vous devez générer des URL basées sur des itinéraires. Vous pouvez le faire en utilisant. la méthode URL::to :

Le code est le suivant :

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

Paramètre de routage

Le code est le suivant :

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


Paramètre de routage facultatif

Code Comme suit :

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


Paramètres de routage facultatifs avec valeurs par défaut

Le code est le suivant :

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


Avec expression régulière Le code de route contrainte par formule

est le suivant :

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

Filtre d'itinéraire

Le filtre d'itinéraire fournit une méthode simple pour restreindre l'accès aux itinéraires spécifiés. Ceci est utile lorsque vous devez créer des zones de votre site qui nécessitent une authentification. Le framework Laravel contient certains filtres de routage, tels que le filtre auth, le filtre auth.basic, le filtre invité et le filtre csrf. Ils sont stockés dans le fichier app/filters.php.

Définir un filtre de routage

Le code est le suivant :

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


Si une réponse est renvoyée par un filtre de routage, la réponse est Considérée comme une réponse à cette requête, la route ne sera pas exécutée, et tous les filtres after liés à cette route seront également annulés.

Spécifier un filtre d'itinéraire pour un itinéraire

Le code est le suivant :

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


Spécifier plusieurs filtres d'itinéraire pour un itinéraire

Le code est le suivant :

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;;
}));


Spécifier les paramètres du filtre d'itinéraire

Le code est le suivant :

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;;
}));


Lorsque le routage est filtré Le serveur reçoit la réponse comme troisième paramètre $response :

Le code est le suivant :

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


Le modèle de base filtre de routage

Vous Vous souhaiterez peut-être spécifier des filtres pour un ensemble d'itinéraires basés sur l'URI.

Le code est le suivant :

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


Dans l'exemple ci-dessus, le filtre admin sera appliqué à toutes les routes commençant par admin/. L'astérisque agit comme un caractère générique et correspondra à toutes les combinaisons de caractères.

Vous pouvez également contraindre les filtres de modèles en spécifiant des méthodes HTTP :

Le code est le suivant :

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

Classe de filtre

Pour les filtres avancés, vous pouvez utiliser une classe au lieu d'une fonction de fermeture. Étant donné que la classe de filtre est un conteneur IoC qui réside en dehors de l'application, vous pouvez utiliser l'injection de dépendances dans le filtre, ce qui facilite les tests.

Définir une classe de filtre

Le code est le suivant :

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


Enregistrer un filtre basé sur une classe

Le code est le suivant :

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

Itinéraires nommés

Les itinéraires nommés facilitent la spécification des itinéraires lors de la génération de sauts ou d'URL. Vous pouvez spécifier un nom pour l'itinéraire comme ceci :

Le code est le suivant :

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

Vous pouvez également spécifier un nom d'itinéraire pour la méthode du contrôleur :

Le code est le suivant :

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

Vous utilisez désormais le nom de l'itinéraire lors de la génération d'URL ou de sauts :

Le code est le suivant :

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

Vous pouvez utiliser la méthode currentRouteName pour obtenir le nom d'un itinéraire :

Le code est le suivant :

$name = Route::currentRouteName();

Groupe d'itinéraires

Parfois, vous souhaiterez peut-être appliquer un filtre à un groupe d’itinéraires. Vous n'avez pas besoin de spécifier de filtres pour chaque route, vous pouvez utiliser des groupes de routes :

Le code est le suivant :

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
});
});

Routage de sous-domaine

Laravel le routage peut également traiter les noms de sous-domaines génériques et obtenir les paramètres génériques du nom de domaine :

Enregistrer la route du sous-domaine

Le code est le suivant :

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

Route préfixe

Un groupe de routes peut ajouter un préfixe au groupe de routage en utilisant l'option préfixe dans le tableau d'attributs :

Ajouter un préfixe au groupe de routage

Le code est le suivant :

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

Liaison du modèle d'itinéraire

  模型绑定提供了一个简单的方法向路由中注入模型。比如,不仅注入一个用户的 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 不仅允许您路由至闭包,也可以路由至控制器类,甚至允许创建 资源控制器.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn