twitterフィードを自分のビューに返すメソッドを持つベースコントローラーがあります。Laravel:ベースコントローラーからdefault.blade.phpにデータを渡す
これをページビューからデフォルトブレードに移動して、サイト全体に表示される冗長性を減らしたいとします。ベースコントローラからブレードにデータを渡すにはどうすればよいですか?
私はそうのようなページコントローラから私の見解にそれを送ることができます:私は内からこのすべてをやりたい
if ($tweets)
{
foreach ($tweets as $tweet)
{
..............
:、
public function get_index()
{
..................
$this->layout->nest('content', 'home.index', array(
'tweets' => $this->get_tweet()
));
}
とビューのこのような出力をdefault.blade.phpと私のBase_Contoller:
<?php
class Base_Controller extends Controller {
/**
* Catch-all method for requests that can't be matched.
*
* @param string $method
* @param array $parameters
* @return Response
*/
public function __call($method, $parameters)
{
return Response::error('404');
}
public function get_tweet()
{
...........
return $tweets;
}
}
どのようにこれは可能ですか?
////////////////////// UPDATE /////////////////////////// //////
アプリケーション/モデル/ tweets.php
<?php
class Tweets {
public static function get($count = 3)
{
Autoloader::map(array(
'tmhOAuth' => path('app').
'libraries/tmhOAuth-master/tmhOAuth.php',
'tmhUtilities' => path('app').
'libraries/tmhOAuth-master/tmhUtilities.php'
));
$tmhOAuth = new tmhOAuth(array(
'consumer_key' => 'xxx',
'consumer_secret' => 'xxx',
'user_token' => 'xxxxx',
'user_secret' => 'xxxxx',
'curl_ssl_verifypeer' => false
));
$code = $tmhOAuth->request('GET',
$tmhOAuth->url('1.1/statuses/user_timeline'), array(
'screen_name' => 'xxx',
'count' => $count
));
$response = $tmhOAuth->response['response'];
$tweets = json_decode($response, true);
return $tweets;
}
}
アプリケーション/ビュー/ウィジェット/ tweets.blade.php
@foreach ($tweets)
test
@endforeach
アプリケーション/ビュー/レイアウト/デフォルト。 blade.php
....
{{ $tweets }}
....
アプリケーション/ composers.php
<?php
View::composer('widgets.tweets', function($view)
{
$view->tweets = Tweets::get();
});
View::composer('layouts.default', function($view)
{
$view->nest('tweets', 'widgets.tweets');
});
アプリケーション/コントローラ/ Base.phpという
<?php
class Base_Controller extends Controller {
/**
* Catch-all method for requests that can't be matched.
*
* @param string $method
* @param array $parameters
* @return Response
*/
public $layout = 'layouts.default';
public function __call($method, $parameters)
{
return Response::error('404');
}
}
アプリケーション/コントローラ/ home.php
<?php
class Home_Controller extends Base_Controller {
public $layout = 'layouts.default';
public $restful = true;
public function get_index()
{
Asset::add('modernizr', 'js/thirdparty/modernizr.js');
Asset::add('jquery',
'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js');
Asset::add('scripts', 'js/scripts.js');
$this->layout->title = 'title';
$this->layout->nest('content', 'home.index', array(
//'data' => $some_data
));
}
}
は私に
を与えていますUn定義された変数:ツイート
エラーが
でそれらを含める必要がありますが、あなたのつぶやきがあなたのレイアウトでレンダリングしたい、または常にコンテンツ内にネストされていますか? –
どちらか正直です。私はそれを行うより良い/クリーンな方法を見つけるまで現在のビューでそれらをレンダリングしています – Fraser
しかし、それらの代わりにあなたのレイアウトのスペースを探したいでしょうか?私はそれがあなたのためにより良い答えを書くのに役立つので、私は尋ねています:) –