SlideShare a Scribd company logo
3 tips of Laravel
2014.07.04 @kurikazu
Laravel Meetup Tokyo vol.4
http://am4.jp/?p=124
Kazuaki
KURIU
• twitter: @kurikazu
• 所属: ディップ株式会社
• 求人広告サービスのWebサイト、
スマートフォンアプリの
開発マネジメントを担当
• 普段は「進捗どうですか」と
聞く方
• Laravel歴は1年くらい
• 認定スクラムマスター
(2011年6月受講)
Laravel 4 で CMS 作りました
作った機能
• 管理系
• 記事登録(文字、画像) / 編集 / 削除
• 限定記事を見られる会員の管理
• 会員にメール一斉送信
• 閲覧系
• 一般記事 / 限定公開記事 の出し分け
• ガラケー対応
今日の話
•CMSを作ってみて得られた
LaravelのTipsをお裾分け
1.ペジネーション
Laravelのペジネーション
$users=DB::table('users')->paginate(10);
$users=User::where('age','>',40)->paginate(10);
Controllerとか
Laravelのペジネーション
$users=DB::table('users')->paginate(10);
<div class="container">
<?php foreach ($users as $user): ?>
<?php echo $user->name; ?>,
<?php echo $user->age; ?>
<?php endforeach; ?>
</div>
<?php echo $users->links(); ?> ←ペジネーション表示
$users=User::where('age','>',40)->paginate(10);
Controller
View
結果
<< 1 2 3 4 5 6 7 8 ... 20 21 >>
Yamada, 20
Tanaka, 31
Suzuki, 21
Honda, 45
Nomura, 12
Mori, 33
Takayama, 54
Takano, 23
Aoki, 61
Nishimura, 47
検索フォームでやってみる
age:
User Search Form
Submit
30 over
if (Input::has('age')){
$age = Input::get('age');
$users = User::where('age','>',$age)->paginate(3);
} else {
$users = User::all()->paginate(3);
 }
<div class="container">
 <?php foreach ($users as $user): ?>
 <?php echo $user->name; ?>
 <?php endforeach; ?>
 </div>
 <?php echo $users->links(); ?>
検索フォームでやってみる
1ページ目 OK
<< 1 2 3 4 5 6 7 >>
Tanaka, 31
Honda, 45
Mori, 33
User Search Result
2ページ目...
<< 1 2 3 4 5 6 7 8 ... 20 21 >>
Honda, 45
Nomura, 12
Mori, 33
User Search Result
条件が引き
継がれない
原因
ページ数しか渡されない
<< 1 2 3 4 5 6 7 8 ... 20 21 >>
Honda, 45
Nomura, 12
Mori, 33
User Search Result
user/list?page=2
修正
<div class="container">
<?php foreach ($users as $user): ?>
 <?php echo $user->name; ?>
 <?php endforeach; ?>
 </div>
 <?php echo $users->appends(array('age' => $age))-
>links(); ?>
appends で条件も渡してやる
結果
検索条件を保持して遷移できる
<< 1 2 3 4 5 6 7 >>
User Search Result
Takayama, 54
Aoki, 61
Nishimura, 47 user/list?
age=30&page=2
2. ガラケー対応
やりたいこと
Laravel
PC
スマホ
ガラケー
UTF-8
Shift_JIS
やりたいこと
Laravel
PC
スマホ
ガラケー
UTF-8
Shift_JIS ここで変換したい
Before/Afterフィルタを使う
方法
ガラケー → Laravel
App::before(function($request)
{
if (ガラケーだったら)
{
// リクエストをUTF8に変換
$converted = 文字コード変換(Input::get());
  Input::merge($converted);
  }
});
Filter.php
UAは Request::server('HTTP_USER_AGENT') で取れる
Laravel → ガラケー
App::after(function($request, $response)
{
if (ガラケーだったら)
{
// 出力文字列を ShiftJIS に変換
$content = $response->getContent();
   $content = mb_convert_encoding($content,
'SJIS', 'UTF-8');
   $response->header('Content-Type', 'text/html;
charset=Shift_JIS');
   $response->setContent($content);
}
});
Filter.php
getContent で取り出して
文字コード変換
Laravel → ガラケー
App::after(function($request, $response)
{
if (ガラケーだったら)
{
// 出力文字列を ShiftJIS に変換
$content = $response->getContent();
   $content = mb_convert_encoding($content,
'SJIS', 'UTF-8');
   $response->header('Content-Type', 'text/html;
charset=Shift_JIS');
   $response->setContent($content);
}
});
Filter.php
デフォルトUTF8なので
設定を上書きする
3. TwitterにPOST
やりたいこと
記事を更新した時にTwitterにPOST
方法
thuohn/twitter-l4 パッケージ
https://github.com/thujohn/twitter-l4
設定方法
 "thujohn/twitter": "dev-master"
composer.jsonに下記の記載を追加
 composer update
下記のコマンドを実行する
設定方法
'providers' => array(
  'ThujohnTwitterTwitterServiceProvider',
)
...
'aliases' => array(
'Twitter' => 'ThujohnTwitterTwitterFacade',
)
app/config/app.phpに下記の記載を追加
php artisan config:publish thujohn/twitter
twitterパッケージの初期化を行う
設定方法
<?php
// You can find the keys here : https://dev.twitter.com/
return array(
    'API_URL'             => 'api.twitter.com',
    'API_VERSION'         => '1.1',
    'USE_SSL'             => true,
    'CONSUMER_KEY'        => 'xxxxxxxxxxxxxxxxxxx',
    'CONSUMER_SECRET'     => 'yyyyyyyyyyyyyyyyyyy',
    'ACCESS_TOKEN'        => 'zzzzzzzzzzzzzzzzzzz',
    'ACCESS_TOKEN_SECRET' => 'vvvvvvvvvvvvvvvvvvv',
);
app/config/packages/thujohn/twitter/config.php
POSTするときは...
 Twitter::postTweet(array('status' => $message,
'format' => 'json'));
おまけ.
MismatchToken?
記事をPOSTする時にエラーが出た
Route::filter('csrf', function()
{
  if (Session::token() != Input::get('_token'))
  {
   throw new IlluminateSessionTokenMismatchException;
  }
});
CSRFフィルタでトークンが一致しないエラー
Input を見てみた
dd(Input::all());
array(0){}
空っぽでした...
原因
アップロードしようとしてた
画像ファイルの容量が
upload_max_filesize
を超えていた
ちなみに
各環境へのデプロイは
Capistrano で簡素化
簡単デプロイで
たのしく
開発しよう
詳しくは以下で
http://qiita.com/kurikazu/items/
e63bc30806aeb3214f93
Enjoy Laravel !!!

More Related Content

PPTX
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
PDF
laravel x モバイルアプリ
PDF
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
PDF
R5 3 type annotation
PDF
Java + React.jsでSever Side Rendering #reactjs_meetup
PDF
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
PDF
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
PPT
マッシュアップ勉強会
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
laravel x モバイルアプリ
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
R5 3 type annotation
Java + React.jsでSever Side Rendering #reactjs_meetup
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
マッシュアップ勉強会

What's hot (19)

PDF
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
PDF
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
PDF
Spring Bootキャンプ @関ジャバ #kanjava_sbc
PDF
Laravel5を使って開発してみた
PDF
【Camphor ×サイボウズ】selenium勉強会
PDF
Spring Bootで変わる Javaアプリ開発! #jsug
PDF
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
PDF
PDF
AzureでLaravel動かしてみた
PDF
behatエクステンションの作り方
PDF
Service Workerとの戦い ~ 実装編 ~ #scripty03
PDF
WildFly Swarm In Progress
PDF
ディレクションのすゝめ
PDF
脱・独自改造! GebでWebDriverをもっとシンプルに
PDF
Java web application testing
PDF
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
PPTX
<第1回>Laravelハンズオンセミナー
PDF
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
PDF
Introduction to WildFly Swarm #jjug
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Laravel5を使って開発してみた
【Camphor ×サイボウズ】selenium勉強会
Spring Bootで変わる Javaアプリ開発! #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
AzureでLaravel動かしてみた
behatエクステンションの作り方
Service Workerとの戦い ~ 実装編 ~ #scripty03
WildFly Swarm In Progress
ディレクションのすゝめ
脱・独自改造! GebでWebDriverをもっとシンプルに
Java web application testing
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
<第1回>Laravelハンズオンセミナー
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
Introduction to WildFly Swarm #jjug
Ad

Viewers also liked (20)

PDF
デザインにもこだわったUiの事始め3
PDF
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
PDF
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
PDF
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PDF
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
PPTX
Laravelチュートリアルを作ってみた。
PPTX
アプリチームを支えるSlack bot
PDF
ビルドサーバで使うDocker
PPTX
Laravel LT
PPTX
20151205フルスクラッチcms作成のノウハウ With Laravel
PPTX
Phpフレームワーク 「laravel」でブログを作ろう
PDF
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PPTX
JavaScriptから利用するFirebase
PDF
Laravel の学び方と得られる学び
PDF
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
PDF
Laravel / Lumen 次の一歩
PPTX
Laravelを使ってみた
PDF
わかってるフレームワーク Laravel
PDF
LaravelでDBを使用しないbasic認証を簡単につくるtips
デザインにもこだわったUiの事始め3
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
Laravelチュートリアルを作ってみた。
アプリチームを支えるSlack bot
ビルドサーバで使うDocker
Laravel LT
20151205フルスクラッチcms作成のノウハウ With Laravel
Phpフレームワーク 「laravel」でブログを作ろう
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
JavaScriptから利用するFirebase
Laravel の学び方と得られる学び
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
Laravel / Lumen 次の一歩
Laravelを使ってみた
わかってるフレームワーク Laravel
LaravelでDBを使用しないbasic認証を簡単につくるtips
Ad

Similar to 3 tips of Laravel (20)

PPTX
Laravel本とコミュニティの話
PDF
第104回 php勉強会@東京 Laravel
PDF
Laravel における Blade 拡張のツラミ
PPT
今、最もイケてるPHPフレームワークLaravel4
PDF
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
PDF
Laravelとテストについて
PDF
Haikara
PDF
PHP 2大 web フレームワークの徹底比較!
PDF
モダンJavaScript環境構築一歩目
PDF
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
PDF
Laravel4で運用するサービス,そしてlaravel5へ
PDF
Backlogでの Perlのつかいかた
PDF
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PPTX
PHPCON_TOKYO_2022_Bigginer.pptx
PDF
今、最もイケてるPHPフレームワークLaravel4
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
PPTX
転職とLaravel
PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PDF
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
PPTX
Mod lua
Laravel本とコミュニティの話
第104回 php勉強会@東京 Laravel
Laravel における Blade 拡張のツラミ
今、最もイケてるPHPフレームワークLaravel4
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
Laravelとテストについて
Haikara
PHP 2大 web フレームワークの徹底比較!
モダンJavaScript環境構築一歩目
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
Laravel4で運用するサービス,そしてlaravel5へ
Backlogでの Perlのつかいかた
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHPCON_TOKYO_2022_Bigginer.pptx
今、最もイケてるPHPフレームワークLaravel4
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
転職とLaravel
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
Mod lua

More from Kazuaki KURIU (7)

PPTX
自社のメインプロダクトにGoを導入したぞ++
PPTX
スマホアプリディレクターが考えていること
PPTX
BITRISEを使っています
PPTX
Metadataリジェクトあれこれ
PPTX
Yokohama North Meetup #2
PDF
エンジニアのためのアイコン作成勉強会
ZIP
Tanabata.trac.LT発表資料
自社のメインプロダクトにGoを導入したぞ++
スマホアプリディレクターが考えていること
BITRISEを使っています
Metadataリジェクトあれこれ
Yokohama North Meetup #2
エンジニアのためのアイコン作成勉強会
Tanabata.trac.LT発表資料

3 tips of Laravel