http://www.techigniter.in/blogs/tutorials/query-logging-in-laravel-5/
・requestの形を統一する
Mockery;
https://medium.com/laravel-4/laravel-4-controller-testing-48414f4782d0#.qreur0n73
・repositoriテスト
http://www.developer.com/services/testing-controllers-in-laravel-with-the-service-container.html
Mockery::
クラス内でnewしないようにする
http://tech.aainc.co.jp/archives/3918
https://readouble.com/laravel/5.1/ja/testing.html
----------
namespace Formativ;
use Illuminate¥Http¥Request;
use Str;
class PostRepository implements PostRepositoryInterface
{
public function __construct(Request $request)
{
$this->request = $request;
}
public function insert()
{
$data = [
"title" => $this->request->get("title"),
"subtitle" => $this->request->get("subtitle"),
"body" => $this->request->get("body"),
"author_id" => $this->request->get("author"),
"slug" => Str::slug($this->request->get("title"))
];
--------------
public function testNewUserRegistration()
{
$this->visit('/register')
->type('Taylor', 'name')
->check('terms')
->press('Register')
->seePageIs('/dashboard');
}
メソッド 説明
$this->type($text, $elementName) 指定したフィールドに「タイプ」します。
$this->select($value, $elementName) ラジオボタンかドロップダウンフィールドを「選択」します。
$this->check($elementName) チェックボックスフィールドを「チェック」します。
$this->attach($pathToFile, $elementName) フォームにファイルを「添付」します。
$this->press($buttonTextOrElementName) 指定したテキストか名前のボタンを「押し」ます。
seeJsonメソッドは渡された配列をJSONに変換します。次にそのJSONが、JSONレスポンス全体のいずれかに現れるかを確認します。ですから、他のプロパティーがJSONレスポンスに含まれていたとしても、指定した部分が存在する限り、テストはパスします。
JSONと一致するか確実に検証
指定した配列がアプリケーションから返されるJSONと完全に一致するかを確認したい場合は、seeJsonEqualsメソッドを使用してください。
class ExampleTest extends TestCase
{
/**
* 基本的な機能テストの例
*
* @return void
*/
public function testBasicExample()
{
$this->post('/user', ['name' => 'Sally'])
->seeJsonEquals([
'created' => true,
]);
}
}
カスタムHTTPリクエスト
アプリケーションに対してカスタムHTTPリクエストを作成し、
完全なIlluminate¥Http¥Responseオブジェクトを取得したい場合は、callメソッドを使ってください。
public function testApplication()
{
$response = $this->call('GET', '/');
$this->assertEquals(200, $response->status());
}
laravel input と request の違い
フォームから一つの値を取得するにはInput::get()メソッドを使用します。
Blade操作|データ表示
{{ }}文は、XSS対策としてエスケープしてくれます。
1
{{ $name }}
{!! !!}文は、エスケープしません。
1
{!! $name !!}
CSRF対策
csrf_field関数を使うと、CSRF対策用のトークン値を持つフィールドを生成してくれます。
「VerifyCsrfTokenミドルウェア」にて、「リクエストのトークン」と「セッションのトークン」が一致するかチェックしてくれます。
configヘルパー関数でconfigデータを取得できます。
$value = config('app.timezone');
// デフォルト値指定
$value = config('app.timezone', $default);
http://www.dn-web64.com/archives/web/laravel-cheat/
http://qiita.com/k-okada/items/c92a3f3594d751d42740
validate
in:foo,bar,... ★これ 存在チェックこれでいいんじゃね?
exists:table,column ★これつかえるんんじゃね?しかし複数キーだしな・・・
required_if:他のフィールド,値,...★ アクションTBLの スクリプト メール
引数で指定された他のフィールドフィールドが、値のどれかを持っている場合に、このフィールドが入力されていることをバリデートします。
required_if:state:0 ★スクリプト実行が選択されているときに必須とする
$rules = [
'name' => 'required|max:40',
'gender' => 'required|in:male,female',
'age' => 'digits_between:0,150',
'use_discount' => 'boolean',
'coupon' => 'required_if:use_discount,1|regex:/^[0-9a-zA-Z]{20}$/',
];
・トレイリングスラッシュについて ★
URLは基本的に/exampleか/example/のどちらかに統一するのが通常かと思いますが、
Laravelは/なしの方に寄せるほうが断然楽です。開発が始まる前になくなるように根回ししましょう。
・laravel debugger は、
.env で
APP_DEBUG=false # 実際に公開するアプリケーションは必ずfalseを設定(true/false)
にすれば、app.php をさわらなくても laravel debuggerオフになるよ
・HOME_URL の設定
config/local/app.php で
//if (App::environment('local'))
をやろうとしたが、うまくいかなかったのであきらめた
→現状の env_application.php の if(/var/www/html/production.php)
で判断しよう! laravelにあわせようとしたができんかったね
・validate
in:foo,bar,...
lavavelバリデートで以下を設定
'title' => 'required|in:"あああ","いいい","ううう"',
すると、上3つ以外を入力すると以下のエラーになる
選択されたtitleは正しくありません。
selectboxに追加しよう
radio selectbox はこれ」対応する
・Config::get('app.timezone') 設定
http://cheats.jesse-obrien.ca/