ホームページ >バックエンド開発 >PHPチュートリアル >Yii2 フレームワークを使用した完全なブログ システムの構築に関するリソースの共有
Yii は、迅速な PHP 開発のためのベストプラクティスの 1 つであり、その豊富な拡張リソースと迅速な開発アイデアが企業にますます好まれており、そのアプリケーションはますます普及しています。このコースでは、ブログシステムを例に、yii2.0 を使った実践的な開発方法と、yii2.0 の実践的な応用方法を学びます。内容は基本構成、ブログフロントエンド、ブログバックエンドの3部に分かれています。
動画再生アドレス: //m.sbmmt.com/course/266.html
先生の教え方:
先生の講義はシンプルかつ奥深く、わかりやすいです論理的思考力を使用して生徒の注意を引き、理性を使用して教室での指導プロセスを制御することで、層ごとに連動し、厳密な議論と厳密な構造を組織化して分析します。生徒たちは先生の講義を聞くことで、知識を学ぶだけでなく思考力の訓練も受け、先生の厳しい学問的姿勢に影響を受け、影響を受けました
このビデオで一番難しいのは、Yii のフレームワークルーティング設定です。フレームワーク ブログ システム:
基本ルーティング
アプリケーションのルートの大部分は app/routes.PHP ファイルで定義されます。 Laravel の最も単純なルートは、URI とクロージャ呼び出しで構成されます。
基本的なGETルート
コードは次のとおりです:
Route::get('/', function(){return 'Hello World';});
基本的なPOSTルート
コードは次のとおりです:
Route::post('foo/bar', function() { return 'Hello World'; });
すべてのHTTPメソッドに応答するルートを登録します
コードは次のとおりです:
Route::any('foo', function() { return 'Hello World'; });
ルートに HTTPS アクセスを強制的に渡す
コードは次のとおりです:
Route::get('foo', array('https', function() { return 'Must be over HTTPS'; }));
ルーティングに基づいて URL を生成する必要がある場合は、URL::to メソッドを使用できます:
コードは次のとおりです:
$url = URL::to('foo');
ルートパラメータ
コードは次のとおりです:
Route::get('user/{id}', function($id) { return 'User '.$id; });
オプションのルーティングパラメータ
コードは次のとおりです:
Route::get('user/{name?}', function($name = null) { return $name; });
デフォルト値のオプションのルーティングパラメータ
コードは次のとおりです:
Route::get('user/{name?}', function($name = 'John') { return $name; });
正規表現制約を使用したルーティング
コードは次のとおりです:
Route::get('user/{name}', function($name) { // }) ->where('name', '[A-Za-z]+'); Route::get('user/{id}', function($id) { // }) ->where('id', '[0-9]+');
ルートフィルター
ルートフィルターは、指定されたルートへのアクセスを制限する簡単な方法を提供します。認証を必要とするサイトのゾーン。 Laravel フレームワークには、auth フィルター、auth.basic フィルター、ゲスト フィルター、csrf フィルターなどのいくつかのルーティング フィルターが含まれています。これらは app/filters.php ファイルに保存されます。
ルーティング フィルターを定義します
コードは次のとおりです。
Route::filter('old', function() { if (Input::get('age') < 200) { return Redirect::to('home'); } });
ルーティング フィルターから応答が返された場合、この応答はこのリクエストに対する応答とみなされ、ルーティングは実行されません。このルーティングに関する情報 after フィルターも解除されます。
ルートのルートフィルタを指定します
コードは次のとおりです:
Route::get('user', array('before' => 'old', function() { return 'You are over 200 years old!'; }));
ルートに複数のルートフィルタを指定します
コードは次のとおりです:
Route::get('user', array('before' => 'auth|old', function() { return 'You are authenticated and over 200 years old!'; }));
ルートフィルタのパラメータを指定します
コードは次のとおりです:
Route::filter('age', function($route, $request, $value) { // }); Route::get('user', array('before' => 'age:200', function() { return 'Hello World'; }));
ルート フィルターが 3 番目のパラメーターとして応答 $response:
を受信すると、コードは次のようになります:
Route::filter('log', function($route, $request, $response, $value) { // });
基本ルート フィルター モード
URIに基づくルートのセット。
コードは次のとおりです:
Route::filter('admin', function() { // }); Route::when('admin/*', 'admin');
上記の例では、admin/ で始まるすべてのルートに管理フィルターが適用されます。アスタリスクはワイルドカード文字として機能し、すべての文字の組み合わせに一致します。
HTTP メソッドを指定してパターン フィルターを制約することもできます:
コードは次のとおりです:
Route::when('admin/*', 'admin', array('post'));
Filter クラス
高度なフィルターの場合、クロージャー関数の代わりにクラスを使用できます。フィルター クラスはアプリケーションの外部に存在する IoC コンテナーであるため、フィルター内で依存関係の注入を使用でき、テストが容易になります。
フィルタークラスを定義する
コードは次のとおりです:
class FooFilter { public function filter() { // Filter logic... } }
クラスベースのフィルターを登録します
コードは次のとおりです:
Route::filter('foo', 'FooFilter');
名前付きルート
ジャンプを生成するときに名前付きルートを指定するのが簡単ですまたは URL ルーティング。次のようにルートの名前を指定できます:
コードは次のとおりです:
Route::get('user/profile', array('as' => 'profile', function() { // }));
コントローラー メソッドのルート名を指定することもできます:
コードは次のとおりです:
Route::get('user/profile', array('as' => 'profile', 'uses' => 'UserController@showProfile'));
URL またはジャンプを生成しています。 ルートの名前を使用します:
コードは次のとおりです:
$url = URL::route('profile'); $redirect = Redirect::route('profile');
currentRouteName メソッドを使用してルートの名前を取得できます:
コードは次のとおりです:
$name = Route::currentRouteName();
Routeグループ
ルートのグループにフィルターを適用したい場合があります。ルートごとにフィルターを指定する必要はなく、ルート グループを使用できます:
コードは次のとおりです:
Route::group(array('before' => 'auth'), function() { Route::get('/', function() { // Has Auth Filter }); Route::get('user/profile', function() { // Has Auth Filter }); });
サブドメイン ルーティング
Laravel ルーティングは、ワイルドカード サブドメインを処理し、ドメイン名からワイルドカード パラメーターを取得することもできます。
サブドメイン ルーティングを登録します
コードは次のとおりです:
Route::group(array('domain' => '{account}.myapp.com'), function() { Route::get('user/{id}', function($account, $id) { // }); });
ルート プレフィックス
ルートのグループは、属性配列のプレフィックス オプションを使用して、ルーティング グループにプレフィックスを追加できます:
ルーティング グループ
コードは次のとおりです:
Route::group(array('prefix' => 'admin'), function() { Route::get('user', function() { // }); });
ルーティング モデル バインディング
模型绑定提供了一个简单的方法向路由中注入模型。比如,不仅注入一个用户的 ID,您可以根据指定的 ID 注入整个用户模型实例。首先使用 Route::model 方法指定所需要的模型:
为模型绑定一个变量
代码如下:
Route::model('user', 'User');
然后, 定义一个包含 {user} 参数的路由:
代码如下:
Route::get('profile/{user}', function(User $user) { // });
因为我们已经绑定 {user} 参数到 User 模型,一个 User 实例将被注入到路由中。因此,比如一个 profile/1 的请求将注入一个 ID 为 1 的 User 实例。
注意: 如果在数据库中没有找到这个模型实例,将引发404错误。
如果您希望指定您自己定义的没有找到的行为,您可以为 model 方法传递一个闭包作为第三个参数:
代码如下:
Route::model('user', 'User', function() { throw new NotFoundException; });
有时您希望使用自己的方法处理路由参数,可以使用 Route::bind 方法:
代码如下:
Route::bind('user', function($value, $route) { return User::where('name', $value)->first(); });
引发404错误
有两种方法在路由中手动触发一个404错误。首先,您可以使用 App::abort 方法:
代码如下:
App::abort(404);
其次,您可以抛出一个 Symfony\Component\HttpKernel\Exception\NotFoundHttpException 的实例。
更多关于处理404异常和为这些错误使用使用自定义响应的信息可以在 错误 章节中找到。
路由至控制器
Laravel 不仅允许您路由至闭包,也可以路由至控制器类,甚至允许创建 资源控制器.
以上がYii2 フレームワークを使用した完全なブログ システムの構築に関するリソースの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。