PHPフレームワーク「Laravel」でコントローラーを使用する
PHPフレームワーク「Laravel」の使い方を調べています。PHPフレームワーク「Laravel」でプログラムエラーの表示
今回は、コントローラーの使い方を調べてみます。
http://laravel.com/docs/controllers
コントローラー
app/routes.phpに全てのロジックを書くわけにもいかないので、
url毎に処理するクラスを分けていきます。
コントローラーは「BaseController」を継承して、app/controllersに作成します。
「MyController.php」を作ってみました。
- <?php
- // app/app/controllers/MyController.php で保存
- class MyController extends BaseController {
- public function showHello($user) {
- return "こんにちは、{$user}";
- }
- }
呼び出すためのroutes.phpはこのようになります。
- <?php
- // app/routes.php
- Route::get('/{user}', 'MyController@showHello');
http://[サーバーIP]/symfoにアクセスしてみると、ちゃんと挨拶が表示されました。
コントローラーへのリンク
内部リンクなどを作成したい場合は、「URL::action」か「actionヘルパーメソッド」を
使用すると便利です。
コントローラーに対するURLを作成してくれます。
- <?php
- // app/app/controllers/MyController.php で保存
- class MyController extends BaseController {
- public function showHello($user) {
- return "こんにちは、{$user}";
- }
- // URL::actionでshowUrlへのリンクを作成
- public function showUrl() {
- return URL::action('MyController@showUrl');
- }
- }
- <?php
- // app/routes.php
- Route::get('hello/{user}', 'MyController@showHello');
- Route::get('url', 'MyController@showUrl');
現在実行中のコントローラ
現在実行中のコントローラー@メソッドを取得するには
「Route::currentRouteAction()」
を使用します。
具体的な使い方はこんなかんじでしょうか。
- <?php
- // app/app/controllers/MyController.php で保存
- class MyController extends BaseController {
- public function showHello($user) {
- return "こんにちは、{$user}";
- }
- // URL::actionでshowUrlへのリンクを作成
- public function showUrl() {
- //return URL::action('MyController@showUrl');
- // Route::currentRouteAction()で
- // 実行中のコントローラーを取得し、URL作成
- return URL::action(Route::currentRouteAction());
- }
- }
コントローラーのエイリアス
コントローラーは名前をつけてRouteに登録できます。
- array(
- 'uses' => '[コントローラー名@メソッド名]',
- 'as' => '[名前]'
- )
という形式で指定します。
URL::actionでURLを生成するとき、ここでつけた別名が指定できるので便利です。
- <?php
- // app/routes.php
- Route::get('hello/{user}', 'MyController@showHello');
- Route::get('url', array(
- 'uses' => 'MyController@showUrl',
- 'as' => 'mycon_name'
- ));
- <?php
- // app/app/controllers/MyController.php で保存
- class MyController extends BaseController {
- public function showHello($user) {
- return "こんにちは、{$user}";
- }
- // URL::actionでshowUrlへのリンクを作成
- public function showUrl() {
- //return URL::action('MyController@showUrl');
- // Route::currentRouteAction()で
- // 実行中のコントローラーを取得し、URL作成
- //return URL::action(Route::currentRouteAction());
- // Routeに登録した別名でURL作成
- return URL::action('mycon_name');
- }
- }
RESTフルコントローラー
いちいちコントローラーのメソッド名まで指定るるのは面倒だという場合は、
コントローラーのメソッド名の命名規約で分岐することができます。
getXXXでgetメソッド。
postXXXでpostメソッド。
anyXXXで全てのメソッドという具合。
ルートの登録は
- Route::controller('test', 'MyController');
という形式で行います。
- <?php
- // app/routes.php
- // Route::getではなく、Route::controllerであることに注意
- //Route::get('users', 'MyController');
- Route::controller('test', 'MyController');
コントローラーはこのようになりました。
- <?php
- // app/app/controllers/MyController.php で保存
- class MyController extends BaseController {
- public function getIndex() {
- return 'トップページ';
- }
- public function getHello() {
- return 'Hello World!';
- }
- public function getArg($arg) {
- return "引数は{$arg}";
- }
- public function getArgs($arg1, $arg2) {
- return "引数は{$arg1}, {$arg2}";
- }
- }
http://[サーバーIP]/testでgetIndexが実行されます。
http://[サーバーIP]/test/helloでHello World!。
http://[サーバーIP]/test/arg/symfo
http://192.168.1.102/test/args/1/2
- 関連記事
-
- PHPフレームワーク「Laravel」でFormタグを生成する
- PHPフレームワーク「Laravel」でビューにテンプレート(Blade)を使用する
- PHPフレームワーク「Laravel」でコントローラーを使用する
- PHPフレームワーク「Laravel」でプログラムエラーの表示
- PHPフレームワーク「Laravel」のビューの使い方
コメント