原文: https://jellybool.com/post/programming-with-laravel-5-routers-views-controllers-workflow
前のチュートリアルに進みましょうこのチュートリアルでは、Laravel のルーター、ビュー、およびコントローラーのワークフローを主に説明します。その目的は、Laravel がどのように処理されるかを理解することです。 a リクエスト時に仕事を取得するにはどうすればよいですか。
始める前に、まずサーバーを起動する必要があります。Laravel のアルティザンを使用する場合は、直接次のようにすることができます。
php artisan serve
その後、localhost:8000 にアクセスすると、Laravel
が表示されます。ここでは今でも Homestead を使用しています:
homestead up
Homestead が開始されたら、喜んでコードを書き始めることができます。
次に、前のセクションで設定したドメイン名 blog.dev にアクセスすると、Laravel も表示されます。 Homesteadのインストールまたは使用中に問題が発生した場合は、私に直接質問してください。
まず、初心者が Laravel に触れるとき、Laravel のファイルディレクトリについて混乱するかもしれません。コンソールとイベント、プロバイダーとは何ですか? .ここにはたくさんのものがあります。
ただし、後続のチュートリアルで関連する内容を順番に説明しますので、ご安心ください。
現時点では、Http/ フォルダーが http リクエストの作成に使用されることを覚えておいてください。たとえば、blog.dev にアクセスするとき、Laravel はその Lovely ページの応答をどのように使用しますか。 ?これは、上の図に示すように、app/Http/routes.php ファイルにあります。
Route::get('/', function () { return view('welcome');});
これは何を意味しますか?実際、これは次のように理解できます。ユーザーが get リクエストを送信するとき (簡単に理解すると、ブラウザのアドレス バーでアクセスすると考えられます)、そのようなルートを登録します。つまり、どのような閲覧アドレスなのか?そうですね、それは Web サイトのルート ディレクトリです。つまり、ユーザーがサイトのルート ディレクトリにアクセスしたとき、ユーザーにどのような応答をすればよいでしょうか。ここでは、ビュー return view('welcome'); をロードする関数 function () {} を直接実行します。このビュー ファイルは resource/views/welcome.blade.php にあり、ビュー ファイルのサフィックスはここにあります。 Laravel は Blade のテンプレート エンジンを使用しているため、Blade.php は混乱するかもしれません。Twig や Smarty などの他のテンプレート エンジンに触れたことがある場合は、テンプレート エンジンについての理解がより明確になるかもしれません。ただし、ここでまだ理解できなくても、将来的にはブレード テンプレートを紹介する専用のコースを用意します。ここで覚えておく必要があるのは、Laravel のテンプレート ファイルは Blade.php で終わるということです。
resources/views/welcome.blade.php ファイルを直接開いて、実際にいくつかの HTML コードが含まれているのを確認することができます。
つまり、上記のルート登録は、実際には blog.dev にアクセスするときの応答を解決する役割を果たします。それでは、Hello World を単純に返してみます。
Route::get('/', function () { return 'Hello World';// return view('welcome');});
ブラウザに戻って blog.dev に再度アクセスすると、上に書かれた Hello World が表示されます。
パラメータを渡してみます。ルートを再登録します。
Route::get('/', function () { return view('welcome');});Route::get('user/{name}', function ($name) { return 'Hello '.$name;});
上の 2 番目のものは、ルーティングの場合、ルーティング内の変数は中括弧 {} で囲まれ、パラメータは処理関数で受信されます。 http://blog.dev/user/guys にアクセスすると、次のことがわかります。結果を返します。
この時点で、http://blog.dev/user にアクセスすると、エラーが報告されます。このルートでは、後で変数 $name を入力することが期待されていますが、入力しなかったため、エラーが報告されます。この目的は、オプションのパラメータ
Route::get('user/{name?}', function ($name = null) { return 'Hello '.$name;});
現時点では、http://blog.dev/user にアクセスしてもエラーは報告されません。もう一度言いますが、この時点では Hello のみが返されるようです。デフォルト値を設定することもできます:
Route::get('user/{name?}', function ($name = 'JellyBool') { return 'Hello '.$name;});
この時点で、変数 $name を入力しない場合は、Hello JellyBool を返します。
上記で登録されたルートは、匿名関数を直接使用して文字列を返したり、ビューを読み込んだりしますが、コントローラーはどこに行くのでしょうか?コントローラーはどのように使用するのでしょうか?まず最初に、登録されたルートが Laravel のコントローラーを使用して次のように記述されていることを理解する必要があります。
Route::get('/','ArticleController@index');
Routes.php 内の元の登録ルートをすべて削除し、上記の行だけを残します。 code : このコード行の意味は、ユーザーが Web サイトとディレクトリをリクエストしたときに、ArticleController を見つけてそのインデックス メソッドを実行する必要があるということです。次に、コマンド内で ArticleController:
を作成する必要があります。インラインで実行:
php artisan make:controller ArticleController
上一篇文章说过artisan这个工具很强大,他可以用来生成我们在开发当中需要的很多东西,给我们的开发带来了很多的便利,如果你花点时间慢慢适应一下,我敢肯定,你以后会爱上Laravel的,会爱上artisan的。这里只是使用了artisan得make:controller命令,其实artisan可以干的事情很多,我们在这个教程中会一一接触到,如果你迫不及待,可以直接看官方文档:
http://laravel.com/docs/5.1/artisan
上面的命令给我们在app/Http/Controllers/目录下生成了ArticleController.php,我们打开它来看看:
在这个文件里面,Laravel帮我们生成了一堆的方法:index(),show(),create()...等,然后我们刚刚在Router(routes.php文件)中注册的路由需要使用ArticleController的index方法,我们就在index()方法里面加载一个视图:
public function index() { return view('articles.lists'); }
这个视图文件应该是位于resources/views/articles/lists.blade.php,但是在views文件夹当中,我们并没有articles/这个文件夹和lists.blade.php,所以我们需要手动创建之。
这里需要注意的是,Laravel的view()方法会默认从views文件夹查找视图文件,所以你不用在view()方法中加入resources/views这个路径,而且你也不用将blade.php写上,Laravel会自动处理这些事情,至于views()方法articles.lists中得.就使用了路径别名,你也可以使用/来写成这样articles/lists
创建好之后,在articles/lists.blade.php写入简单地HTML代码:
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/html"><head> <meta charset="UTF-8"> <title>Article lists page</title> </head><body><h1>这是文章列表页面</h1></body></html>
然后访问blog.dev/,我们就可以看到上面的模板内容了:
到这里,不知道你对Laravel的Router,Views,Controllers这三个的工作流程有没有一个清晰的认识,通常我们需要实现某个功能(或者说新创建一个页面)都是这样的:
1. 在routes.php中注册路由 ---> 2. 创建对于的控制器 ---> 3. 在控制器中得对于方法加载视图
对应得实际操作大概是这样的:
1. Route::get('/','ArticleController@index');2. php artisan make:controller ArticleController3. public function index() { return view('articles.lists'); }
关于Laravel的Router,Views,Controllers的工作流程就大概讲到这里,如果你有任何疑问,可以随时在评论里面问我。然后下一节的内容会讲以下的内容:
数据库的配置和Laravel的Migration用法
将变量传给视图文件
blade模板的基本用法
最后:
Happy Hacking