これが私の側のばかげた見落としであることを願っていますが、これに関する情報や、Laravelの同様の使用例に関する情報を見つけることはほとんどできませんでした. 私はLaravel 4サイトを開発しています.コンテンツにはローカルデータベースではなく、Tumblr APIを介して特定のTumblrブログからの投稿が含まれています.
すべてのTumblr投稿には特定のタイプ(「テキスト」、「ビデオ」、「写真」など)が関連付けられており、各タイプには吐き出す必要があるまったく異なるタイプのコンテンツがあるため、Bladeテンプレートを用意していますマスターpost
Blade テンプレートから継承する各投稿タイプ。(現在、すべてが単なるスタブです。)
フロント ページを埋めるために、コントローラーで、これらの投稿ビュー ( ) を配列に入力しています$postViews
。腹立たしいのは、コントローラーの$postViews
個々のビューをループしてエコーアウトすると、適切なコンテンツが含まれていることです。配列内の 3 つのビューすべてが、正しいテンプレート内の最終サイトに表示されます。
しかし、私$postViews
が自分のwelcome
ビューに送信し、そこにループスルー$postViews
すると、配列の最初のビューのみの 3 つのインスタンスがレンダリングされます。理由がわかりません。
関連するコードは次のとおりです。ウェルカム テンプレートでわかるように、$postViews
ネイティブ PHP と Laravel テンプレート構文の両方を使用してウェルカム ビューをループしてみました。どちらも同じ動作を示します。3 つの投稿のうち最初の投稿のみを 3 回表示します。
// controllers/HomeController.php
class HomeController extends BaseController {
public function showIndex()
{
$client = new Tumblr\API\Client(CONSUMERKEY, CONSUMERSECRET);
$tumblrData = (array) ($client->getBlogPosts(BLOGNAME));
$postViews = array();
foreach ($tumblrData['posts'] as $post) {
$post = (array) $post;
$type = TumblrParse::getPostType($post);
$postViews[] = View::make('tumblr.'.$type, array('post' => $post));
}
foreach ($postViews as $p){
echo $p;
// This works! It displays each post view properly before
// before rendering the welcome view, but I need them to
// be inside the welcome view in a specific place.
}
return View::make('home.welcome')->with('postViews', $postViews);
}
// views/home/welcome.blade.php
@extends('layouts.master')
@section('title')
@parent :: Welcome
@stop
@section('content')
<h1>Hello World!</h1>
<?php
foreach($postViews as $p) {
echo $p; // Just outputs the first of the array three times
}
?>
@foreach($postViews as $p)
{{ $p }} // Just outputs the first of the array three times
@endforeach
@stop
// views/layouts/post.blade.php
<div class="post">
@yield('postcontent')
</div>
// views/tumblr/photo.blade.php
// Other post types have their own views: video.blade.php, text.blade.php, etc.
@extends('layouts.post')
@section('postcontent')
<h1>This is a photo post!</h1>
<?php var_dump($post); ?>
@stop
どんな助けにも本当に感謝します!私はLaravelを初めて使用していますが、それは明らかです。そして、私が知っている限りでは、特にLaravelではなく、一般的にPHPで何か間違ったことをしています。