Я создал файл Helper для загрузки общих модулей на страницах. Идея заключается в том, что в моем контроллере я передаю массив модулей функции, и он загружает их в представление. У меня было это работает, объявив HTML в файле помощника. Теперь я сохранил HTML как представление, но при попытке передать переменные из помощника в представление я получаю неопределенные ошибки переменных.
Мой помощник:
if (!function_exists('twitter_feed'))
{
function twitter_feed( $user = False, $count = 3 )
{
$ci=& get_instance();
$ci->load->database();
if ( $user === FALSE ) {
$query = $ci->db->limit($count)->order_by( 'DATETIME_STAMP', 'DESC' )->get( 'twitter_feed' );
$data['result'] = $query->result_array();
} else {
$query = $ci->db->limit($count)->order_by( 'DATETIME_STAMP', 'DESC' )->get_where( 'twitter_feed', array( 'SCREEN_NAME' => $user ) );
$data['result'] = $query->result_array();
}
$feed = $ci->load->view('modules/twitter_feed', $data['result'], true);
return $feed;
}
}
Мой взгляд
<section class="sponsor-section">
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="sponsor " >
<h2 class="heading"><strong>Avid Carper's</strong> Tweets</h2>
<?php
foreach ($result as $tweet) { ?>
<div class="col-sm-4 ">
<div class="tweet">
<img src="<?=$tweet['PROFILE_IMAGE']?>" alt=""/>
<p><strong><?=$tweet['DISPLAY_NAME']?></strong> <br><a href="https://twitter.com/<?=$tweet['SCREEN_NAME']?>/status/<?=$tweet['TWEET_ID']?>" target="_blank"><?=$tweet['DATETIME_STAMP']?></a><br>
<a href="https://twitter.com/<?=$tweet['SCREEN_NAME']?>" target="_blank"><span class="tw-user">@<?=$tweet['SCREEN_NAME']?></span></a>
<p class="tweet1"><?=$tweet['TWEET']?></p>
<p><a href="https://twitter.com/intent/tweet?in_reply_to=<?=$tweet['TWEET_ID']?>"><i class="fa fa-twitter"></i> Tweet this</a></p>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
</div>
</section>
Если я использую get_defined_vars (), я вижу, что информация есть, но единственный способ увидеть доступ к ним — это использовать $ _ci_data [‘_ ci_vars’], как я делаю в следующем представлении.
<section class="sponsor-section">
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="sponsor " >
<h2 class="heading"><strong>Avid Carper's</strong> Tweets</h2>
<?php
foreach ($_ci_data['_ci_vars'] as $tweet) { ?>
<div class="col-sm-4 ">
<div class="tweet">
<img src="<?=$tweet['PROFILE_IMAGE']?>" alt=""/>
<p><strong><?=$tweet['DISPLAY_NAME']?></strong> <br><a href="https://twitter.com/<?=$tweet['SCREEN_NAME']?>/status/<?=$tweet['TWEET_ID']?>" target="_blank"><?=$tweet['DATETIME_STAMP']?></a><br>
<a href="https://twitter.com/<?=$tweet['SCREEN_NAME']?>" target="_blank"><span class="tw-user">@<?=$tweet['SCREEN_NAME']?></span></a>
<p class="tweet1"><?=$tweet['TWEET']?></p>
<p><a href="https://twitter.com/intent/tweet?in_reply_to=<?=$tweet['TWEET_ID']?>"><i class="fa fa-twitter"></i> Tweet this</a></p>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
</div>
</section>
Есть лучший способ сделать это? как уже было сказано, я загружаю представление из помощника, чтобы освободить мои контроллеры, поскольку эти модули являются «блоками» в макете.
Задача ещё не решена.
Других решений пока нет …