ふたりはララベル (Laravel PHP Framework)

PHPフレームワークのLaravelの体験記を書いていきます。こんなタイトルのブログですが萌え系アニメは一秒たりとも観たことがありません。

2013-01-01から1年間の記事一覧

selectタグで配列を送信する

name要素に[]をつけると配列になる。 <select multiple data-rel="chosen" class="span10" name="tags[]"> @foreach($tags as $tag) <option>{{ $tag->name }}</option> @endforeach </select>

Form::modelを使った場合は初期値をnullにする

Form::modelを使う場合は、既に入っている値を自動的に取得してくれるので便利。注意するのは初期値を指定するときはnullにすること。 {{ Form::model($title,[ 'method' => 'put', 'route' => ['title.update',$title->id], 'class' => 'form-horizontal' ]…

Laravelとdatepicker

jQuery-UIのdatepickerはMySQLフォーマットにしよう。 MySQLのDate型は「yy-mm-dd」なので、jQuery-UIのdatepickerはデフォルトのままだと使えない。 以下のように設定を変える必要がある。 $(function() { $(".datepicker").datepicker("option", "dateForm…

LaravelでNO_ZERO_DATEは効かない

MySQLに「NO_ZERO_DATE」を指定すると、Laravelが動かなくなった。どうやらtimestamps()が違反するらしい。 SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'created_at'

Form::selectの書き方

Formでselect書くときはこうするのか。 {{ Form::select('bunrui', ['PHP', 'Perl', 'Ruby'], 'PHP',['data-rel'=>'chosen']) }}以下のように出力される。 <select data-rel="chosen" name="bunrui"> <option>PHP</option> <option>PHP</option> <option>Perl</option> <option>Ruby</option> </select>

FormをModelと一致させる

Blade側でFormをModelと一致させる。 {{ Form::model($title,[]) }}そうするとController側でこういう書き方ができて楽。 $title = Title::find($id); $inputs = Input::all(); $title->update($inputs);

Laravelのファイルアップロード

Laravelでファイルアップロードをする場合。 Blade側 {{ Form::open(['action' => ['TitleController@upload'], 'files' => true]) }} <fieldset> クリックしてCSVファイルを選択してください ⇒ <input class="input-file uniform_on" type="file" name="csv"> <div class="form-actions"> <button type="submit" class="btn btn-warning">アップロード</button> /div> …</div></fieldset>

HTML::styleでID指定する

HTML::styleでIDを指定したい場合は例によって引数で渡す。 {{ HTML::style('ashley/css/colors.css',['id'=>'colors']) }}<link id="colors" media="all" type="text/css" rel="stylesheet" href="http://localhost/ashley/css/colors.css"></link>

Laravel 4.1

Laravel 4.1がついに出た!と思ったらすでに4.1.1になっていた。

自作コマンドのオプション

自作コマンドを作った場合、optionメソッドの戻り値はオプションの有無の真偽値なので、「$this->option('auto')」の結果はTrueかFalseだ。以下みたいに書ける。 public function fire() { if ($this->option('auto')) { echo 'Hello'; } } protected functi…

workbenchに対してmigrateを実行する

例えば認証パッケージのconfideでmigrateを実行したいときは php artisan migrate --package=zizaco/confideを実行すれば、「vendor\zizaco\confide\src\migrations」フォルダ内が読み込まれる。しかし自作のパッケージだとworkbench内に置かれるのでやり方…

whereメソッドで結果を一件だけ取得したいとき

find()のように結果を一件だけ取得したいときはfirst()を使う。 $title = Title::where('name','=',$name)->first();

Laravelで定数値を設定する

他にも方法ありそうだけど、とりあえず…。 「app\start」フォルダ内に「constants.php」を作って、中に定数値を記述する。

artisan workbenchでJSONのエラーが出たら

こんなエラーが出た。 C:\xampp\arana>php artisan workbench futari/rei --resources Package workbench created! [Composer\Json\JsonValidationException] "./composer.json" does not match the expected JSON schema: - authors[0] : the property name…

Form::openでメソッドとは違うURLを使いたいとき

Form::openでメソッドとは違うURLの要素を使いたいときは以下のようにする。 {{ Form::open(['action' => 'VoteController@reset','url'=>'delete']) }}出力はこうなる。 <form method="POST" action="http://localhost/delete" accept-charset="UTF-8"></form>

いきなりファサードにチャレンジする

Laravelのドキュメントには「ファサードを始める前にIoCコンテナを習得しとけよ!」って強めに書いてある。しかし「Auth」って書くだけでメソッドを呼び出すことができるファサード、すぐ使いたかったのでいきなりやってみた。未だにIoCコンテナはわからない…

自作のパッケージ内でEloquentを使う

自作のパッケージ内、または名前空間内でEloquentを使う場合は名前空間を指定する。単に「\」をつけるだけ。 $titles = \Title::get();

よくあるエラー「getResults() on a non-object」

Call to a member function getResults() on a non-object主にボケミスしたときに出てくるメッセージ。例えば「$user->save()」のつもりが「$user->save」とやってしまったときに、このメッセージが出てくる。

レンタルサーバにComposerをインストールする

さくらのレンタルサーバにComposerをインストールしてみた。1手順で終わった。まずはアカウントディレクトリ直下に移動し、composer.pharをダウンロードします。 %curl -sS https://getcomposer.org/installer | php #!/usr/bin/env php All settings correc…

Laravel初心者じゃなくてフレームワーク初心者

Laravelを使っている人のほとんどが他のフレームワーク使いから転向してきた人で、初めてのフレームワークがLaravelです!完全な初心者です!Wordpressと何が違うんですか?という人は私くらいなものだろう。Laravelに関する情報を検索すると、みんな難しい…

Laravelではページのタイトルをどうつければいいか?

例えば「無題のドキュメント」というタイトルをつけたいとして…。 方法1:Blade上にタイトルを書く 以下のようにBladeを設定する。 @extends('layout.default') @section('title') 無題のドキュメント @stop @section('content') <p>Hello World.</p> @stop layout…

ページネーションをシンプルに作り替える

この画像みたいなシンプルなページネーションがやりたい。 でも作り方がわからなかったので直接 「vendor\laravel\framework\src\Illuminate\Pagination\BootstrapPresenter.php」を編集するという荒業を使った。まずはview.phpを編集した後にslider.phpを自…

LaravelのEloquentで特定のカラムだけを取得したい

SQL文で言うところの select `name`,`address` from title; をLaravelのEloquentで実現したい場合は、getメソッドを使う。引数が配列になることに注意。Eloquentの結果をただの配列にするtoArrayも併用すると便利。 $titles = Title::get(['name','address']…

LaravelのEloquentでLIKEを使う

LaravelのEloquentでSQL文のLIKE演算子を使いたい場合は、whereの第2引数をLIKEにすればよい。 $titles = Title::where('tags', 'LIKE', "%$tagname\n%")->get()

Bootstrapでスマホだけコンテンツを隠したい

PCでは便利なブラウザ上の情報でも、スマホからアクセスする時は非表示にしたい。Bootstrap3ではclassにhidden-smを指定すると消せられる………はずなんだけど消えなかった。 <div class="panel panel-primary hidden-sm"> 試しにhidden-lgを指定したらPCブラウザ上ではちゃんと消えた。 <div class="panel panel-primary hidden-lg"> そこでvisible-lg</div></div>…

さくらのレンタルサーバでcheckboxの名前が数字だと取得できない

さくらのレンタルサーバで、inputタグのcheckboxのnameが数字だと取得できない。さくら以外の環境だと大丈夫なんだけど。どういう現象なんだろう?これだと値がサーバ側にいかない。 <input type="checkbox" name="1878" value="1"> チェック これだと大丈夫。 <input type="checkbox" name="A1878" value="1"> チェック

Formのインプットに隠し属性を持たせる

Formのinputにhidden属性を持たせたいときは、Form::hiddenを使う。 {{ Form::hidden('phone', '090-555-12345') }以下のように出力される。 <input name="phone" type="hidden" value="090-555-12345">

Laravelのチェックボックスやラジオボタンを記入済みにする

Laravelのチェックボックスやラジオボタンを記入済みにするとき三番目の引数にtrueと書けばよい。 echo Form::checkbox('name', 'value', true); echo Form::radio('name', 'value', true);

ComposerをWindowsに手動インストール

とりあえずWindowsインストーラを使う ComposerのサイトからダウンロードしたWindows用の「Composer-Setup.exe」を使えば終わりです。これより下はそれでも上手くいかなかった人向けです。ちなみに「Composer-Setup.exe」はcomposer.batを自動的に置いてくれ…

Eloquent上でバリデーションを設定する

Laravelのバリデーション(入力値の検証)は大変便利という評判だけど、公式ドキュメント上だとコントローラー側でバリデーションする例が書いてある。それよりもEloquent上でバリデーションしたい。Eloquentの中にvalidateメソッドを作ってみた。 class Use…