のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,840人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ[PHPフレームワーク]Laravel

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    501 : nobodyさん - 2015/06/03(水) 20:20:56.77 ID:???.net (+49,+21,-9)
    コントローラーじゃなくて、モデルからブレードにわたしてんの?なして?
    502 : nobodyさん - 2015/06/03(水) 20:30:31.43 ID:???.net (-1,-29,-27)
    レスありがとうございます。

    説明下手ですいません。
    コントローラでmodelから取得した配列をbladeに渡しています。
    503 : nobodyさん - 2015/06/03(水) 21:31:46.45 ID:???.net (+9,-30,-171)
    こんなふうにテンプレートを定義して
    public $layout = 'template';

    こんな風に渡すといいよ
    $this->layout->content = View::make('ビュー名', array('results' => $results, 'arg2' => $arg2));

    この場合$resultsが配列の場合は
    @foreach($results as $val)
    ごにょごにょ
    @endforeach

    みたいな感じで取れる。
    504 : nobodyさん - 2015/06/03(水) 22:16:24.91 ID:???.net (+4,-29,-29)
    laravel-debugbar 入れれば見れた気がする
    505 : nobodyさん - 2015/06/04(木) 10:05:15.96 ID:???.net (+10,-30,-91)
    >503さん
    ありがとう。

    1. $templateを定義して、¥View::makeの戻り値をcontentsに値を代入している理由
    2. ¥View::makeを使う理由

    がわかりません。

    contensにブレードが生成したhtmlが入ってるよということでしょうか?
    506 : nobodyさん - 2015/06/04(木) 10:11:54.09 ID:???.net (+7,-30,-83)
    >504さん

    レスありがとうございます!

    debugbar入れてみた。
    IDE使ってるからこういうブラウザに機能追加されるようなデバッグツールの使い道がよくわからん。

    クエリビルダだと実行されたクエリがわからないので、それが気軽にみられるようになるとこは気に入った。

    Debug::info();で出力するってことでしょうか?
    507 : nobodyさん - 2015/06/04(木) 13:36:44.12 ID:???.net (+10,-30,-99)
    >>505
    意味は使ってみたらわかる。
    まずやってみるよろし。

    上の例ではtemplate.blade.phpで{{@$content}}って書けばあとは作成したビューで値が取れる。
    View::makeでビューの作成と、ビューに渡す配列を同時に設定してんだね。楽だね。

    つまり「ビュー名.blade.php」で@foreach($results as $val)とかすればいいってことだね。
    508 : nobodyさん - 2015/06/04(木) 13:41:52.81 ID:???.net (+57,+29,-69)
    あ、テンプレートを作る理由はもちろん各パーツのモジュール化が楽だから。
    ヘッダーとか、フッターとか、ビュー作るごとにわざわざ付けるの面倒でしょ。
    全部テンプレート経由で設定しとけば、変更も楽よ。
    509 : nobodyさん - 2015/06/04(木) 14:13:45.46 ID:???.net (+4,-30,-93)
    >507,508さん
    すごい!
    テンプレート作る理由の解説、滅茶苦茶分かりやすくて涙出そうです。
    ありがとうございます。


    ただやってみたのですがうまくはいきませんでした。
    環境はlaravel5で、上記例の$this->layout->content = View::make(…とするとプロパティがないようでエラーが発生します。
    予めtemplate.blade.phpに何か仕込んでおく必要があるのでしょうか?
    510 : nobodyさん - 2015/06/04(木) 14:29:57.63 ID:???.net (+40,-30,+0)
    ごめん、5はまだ試してないんだw

    PostController.phpを作る。
    class PostController extends BaseController { //http://example.com/post

    public $layout = 'template'; // これtemplate.blade.php

    public function getIndex($id) // getでhttp://example.com/post/<id>でアクセスした場合
    {
    $results = Post::where('id', $id)->get(); // 適当にPostモデルで定義したデータベースから値取得
    $hoge = "hoge"; // 解説のために、こんなパラメータも追加

    $this->layout->content = View::make('post', array( // ここでpost.blade.php
    'results' => $resultsCashe,
    'hoge' => $hoge
    ));
    }

    template.blade.php作る。
    //なんか適当にヘッダーとか
    {{@$content}}
    //サイドバーとかフッターとか

    post.blade.php作る。
    @foreach($results as $val)
    e($val->post_title); //例えば投稿のタイトルとか出力
    @endforeach

    全体こんな感じ
    511 : nobodyさん - 2015/06/04(木) 14:31:39.98 ID:???.net (-2,-30,-81)
    あ、コピペしてミスった。

    「'results' => $resultsCashe,」じゃなくて
    「'results' => $results,」ね
    512 : nobodyさん - 2015/06/04(木) 14:39:06.24 ID:???.net (+9,-30,+0)
    $results = モデル名::all()->where(条件)->pagenation(1ページ表示件数);

    として取得したオブジェクトをビューで表示すると

    @foreach($results as $val)

    {{$val->カラム名}} ・・・表示できない(値がnullになっている)
    {{$val['origin']['カラム名']}} ・・・表示できる
    {{$val->created_at}} ・・・表示できる

    @endforeach

    {{$results->render()}} ・・・表示できる

    という結果になりテーブルの値がビューに渡せません。
    created_atはcarbonという仕組みのおかげで表示できているだけのようです。

    例えばコントローラ側を$results = モデル名::all()->where(条件)->pagination(1ページ表示件数)->toArray();
    とすれば普通に連想配列で値は取れますが

    @foreach($results as $val)

    {{$val['カラム名']}} ・・・表示できる
    {{$val->created_at}} ・・・表示できない

    @endforeach

    {{$results->render()}} ・・・エラーが発生してしまう

    今度はページネーションが使えなくなってしまいます。

    どうやるのが正解なのでしょうか?
    513 : nobodyさん - 2015/06/04(木) 14:40:04.40 ID:???.net (+32,-29,-23)
    >>506
    普通にViewsタブ内の各ビューをクリックすれば、そのビューの持ってる変数見られるでしょ
    514 : nobodyさん - 2015/06/04(木) 14:45:46.24 ID:???.net (+4,-29,-49)
    質問の続き(510)を先に書き込んでしまいました。すみません。。。


    >510さん
    完全に理解できました!ありがとうございます。
    用途としては画面共通で使う検索条件のプルダウン用配列なんかをtemplateで読み込んでおくような使い方でいいのでしょうか?
    515 : nobodyさん - 2015/06/04(木) 14:49:46.33 ID:???.net (+60,+28,-4)
    >513さん

    ありがとうございます。
    私の環境だと配列を渡すと配列名しか見えません。
    516 : nobodyさん - 2015/06/04(木) 15:14:39.87 ID:???.net (+3,-30,-60)
    用途は思いつく限りなんでもいいんじゃない?

    上で書いたとおりヘッダーやフッターを設定しとくのが一般的だろうけども。

    例えば特定の画面で、メニューバーの表示非表示をコントロールしたいとかの場合は
    $this->layout->menubar = View::make('menubar', array('flag' => 'true'));
    みたいにすればフラグも渡せるし。

    まあなんていうか、自由w
    517 : nobodyさん - 2015/06/05(金) 11:30:37.70 ID:???.net (+3,-29,-91)
    度々すみません。

    510の件まだ解決できず悩んでいます。

    ビューに渡したコレクションからアロー演算子でテーブルの値を取得し、さらにrender()でpaginationを生成するにはどのようにしたらよいのでしょうか。

    2ちゃんねるの皆さんのお知恵をかしてください。環境はlaravel5です。
    518 : nobodyさん - 2015/06/05(金) 13:11:19.84 ID:???.net (-28,-29,-37)
    >>512
    最初の$val->カラム名で値が取れないのがおかしい
    その$valが何なのかもう少し調べてみばいいんじゃないかな
    get_class関数でそれがどのクラスのオブジェクトなのか調べたり、単純に中身を表示させたりとかさ
    中身はdd関数で表示できたかな
    522 : nobodyさん - 2015/06/06(土) 12:28:36.65 ID:???.net (+9,-30,-105)
    本当にその方法で値が取れないなら、モデルか、データベースの設計が間違ってる。

    例えばPostというモデルを作る場合は、こんなかんじだよ。

    class Post extends Eloquent {
    protected $guarded = []; // 複数のカラムからデータを取得するため
    protected $table = 'posts';
    }

    protected $table = 'posts'は省略可能だけど、自動でモデル名+sになるから注意。

    データベースについてはちゃんとモデル名に対応したテーブルがあること、
    配列で返って来るだけの複数の投稿があることを確認かなぁ。

    っていうか$val['original']ってのがさっぱりわからん。
    たぶんどっかで凡ミスしてる。
    523 : nobodyさん - 2015/06/06(土) 13:10:11.48 ID:???.net (+16,-1,-1)
    がーど
    524 : nobodyさん - 2015/06/06(土) 15:04:20.38 ID:???.net (+30,-30,-29)
    >>520
    > ブレード側で{{ $val->カラム名 }}とした場合は値は取得できず
    > {{ $val['original']['カラム名'] }}とすることで値が取得できました。

    モデルにおかしなミューテーターを書いてるだけのように見えるが
    525 : nobodyさん - 2015/06/07(日) 02:29:41.28 ID:???.net (+73,+16,-14)
    みゅーてーたー?
    526 : nobodyさん - 2015/06/07(日) 15:41:19.32 ID:???.net (+66,+29,-70)
    >>525
    ごめん >>524 はミューテーターじゃなくてアクセサーだ
    original 経由で正しい値が読み取れるのなら
    アクセサーかアクセサーを呼び出すどこかに問題があるんじゃないかとね
    527 : nobodyさん - 2015/06/07(日) 20:11:06.43 ID:???.net (+4,-29,-63)
    518です。

    >522、521、522さん
    ありがとうございます!!
    原因が判明しました。どうやらモデルにカラムと同名のプロパティを定義したことが原因だったようです。
    ガード、ミューテタがヒントになりました。
    528 : nobodyさん - 2015/06/07(日) 23:49:39.17 ID:???.net (+90,+29,-23)
    検証するときは考えられる最も単純な記述で値が取れるか調べるといいよ。
    「ここはあってるはず」ってのが一番の天敵。
    529 : nobodyさん - 2015/06/08(月) 00:28:02.49 ID:???.net (+68,+27,+1)
    >528さん

    アドバイスありがとうございます。
    530 : nobodyさん - 2015/06/14(日) 00:28:37.45 ID:???.net (+57,+29,-23)
    っていうか、ミューテーターとかアクセサーとか初めて聞いた。
    一般的に使われる言葉なの?
    531 : nobodyさん - 2015/06/16(火) 08:34:14.30 ID:sVb6gbHI.net (+24,+29,-55)
    使われてるんじゃね?
    アクセサーのことを
    ゲッター/セッターの両方をさす場合(rubyとかrubyとかrubyとか)もあるから、
    少しややこしいけど。
    532 : nobodyさん - 2015/06/22(月) 18:07:15.57 ID:???.net (+3,-30,-69)
    やっぱり5.1からEloquentとIlluminate¥SupportのCollectionのlistsメソッドは
    arrayじゃなくCollectionを返すようになったんだな
    しかしQueryBuilderのlistsはarrayのままという謎仕様
    こういうのホントやめてほしいんだがな
    533 : nobodyさん - 2015/06/22(月) 19:37:25.41 ID:???.net (-1,-29,-3)
    なぁーにvar_dumpで頑張ればいいさ
    534 : nobodyさん - 2015/06/23(火) 09:11:54.72 ID:???.net (+57,+29,-22)
    そういう時はプルリクかイシュー書いてみんなで良くしていこうよ
    535 : nobodyさん - 2015/06/24(水) 09:06:25.58 ID:???.net (+57,+29,-45)
    laravl取り入れてる人や会社はレベルが高くて丁寧なイメージあるね。
    海外でも活発に情報がやりとりされてるし。
    あんま素人が手を出しにくいってのもあるかもしれんけども。
    536 : nobodyさん - 2015/06/26(金) 19:31:44.88 ID:???.net (+57,+29,-13)
    ねーよそんなイメージ。
    てかララベルを業務に採用している会社なんてあるんかw
    537 : nobodyさん - 2015/06/27(土) 00:08:04.47 ID:???.net (+57,+29,-30)
    すまんな、ここ数年俺が納品した会社はlaravel運用だ
    538 : nobodyさん - 2015/06/27(土) 00:35:31.98 ID:???.net (+57,+29,-4)
    普通にあるだろ。しらねーなら黙ってろ田舎もん。
    539 : nobodyさん - 2015/07/04(土) 13:47:19.61 ID:???.net (+57,+29,-34)
    Laravelの賞味期限は、あと何年くらいかな・・・
    541 : nobodyさん - 2015/07/17(金) 21:42:22.89 ID:???.net (+4,-28,-109)
    CodeIgniterをずっと使ってきましたが、ちょっとだけ新しいフレームワーク
    に興味を持ち始めました。

    Laravelって良いですか?
    10年以上運用保守するシステムにも安心して使えますか?

    CodeIgniterから乗り換えた方、Laravelの良さを教えてください。
    542 : nobodyさん - 2015/07/17(金) 23:33:51.59 ID:???.net (+53,+20,-77)
    今回の長期保証でも2年とかじゃね?
    WordPressみたいなもんだよ。ころころ更新される。
    良さはコンポーサーとか、restfulなモデルとか、OAuthとか、新しい技術をどんどん取り入れること。
    だから長期運用が目的なら向かないだろうね。

    ちなみに10年同じバージョンで運用保守可能なフレームワークなんてないから。
    CentOSですら無理じゃね?w
    543 : nobodyさん - 2015/07/18(土) 09:17:57.86 ID:???.net (+32,+4,-96)
    getメソッドとpostメソッドを別に扱う点だな。
    最初は戸惑うだろし、混在したコードを書いてしましがちだが、徹底して分離するべし。

    もうcodeIgniterには戻れん。
    547 : nobodyさん - 2015/07/26(日) 00:10:36.10 ID:???.net (+29,+28,-47)
    特定のディレクトリ(今回は、pc)だけに聞く外部ファイルを置きたいです

    これの意味が何回読んでもわからんw
    聞くが「効く」でも「きく」でもさっぱりわからん

    内部でpublic以下のファイルを指定したいだけなら、そんな関数が用意されてるでしょ。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について