2013-03-22 5 views
0

В Codeigniter У меня есть вид theme-fonts.php, который я загружаю в другом виде page.php.Codeigniter Получить php-массив из вида

page.php

<?php $this->load->view('theme-fonts'); ?> 
<script type="text/javascript"> 
    try{ 
     var fontsArray = <?php json_encode($font_list); ?>; 
     console.log(fontsArray); 
    }catch(err){ 
     console.log(err.message); 
    } 
</script> 

Ниже приводится определение внутри моего theme_fonts.php файла:

<link href="http://fonts.googleapis.com/css?family=Aclonica" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Michroma" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Paytone+One" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Denk+One" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Wendy+One" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Fjalla+One" rel="stylesheet" /> 
<?php 
    $font_list = array(); 
    array_push($font_list,"Aclonica"); 
    array_push($font_list,"Michroma"); 
    array_push($font_list,"Paytone+One"); 
    array_push($font_list,"Denk+One"); 
    array_push($font_list,"Wendy+One"); 
    array_push($font_list,"Fjalla+One"); 
?> 

Так что мой вопрос заключается в том, чтобы получить доступ к массиву PHP с точкой зрения theme-fonts.php в главном окне page.php?

С уважением: Джеханзеб

ответ

0

Ну после того, как я решался вопрос, я чувствую, что это был глупый вопрос. Как я загружаю theme-fonts вид внутри page вид и не в параллель. Я могу просто написать код сценария в theme-fonts. Это, в свою очередь, будет записывать его в мой вид page.

page.php

<?php $this->load->view('theme-fonts'); ?> 

тема-fonts.php

<link href="http://fonts.googleapis.com/css?family=Aclonica" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Michroma" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Paytone+One" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Denk+One" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Wendy+One" rel="stylesheet" /> 
<link href="http://fonts.googleapis.com/css?family=Fjalla+One" rel="stylesheet" /> 
<?php 
    $font_list = array(); 
    array_push($font_list,"Aclonica"); 
    array_push($font_list,"Michroma"); 
    array_push($font_list,"Paytone+One"); 
    array_push($font_list,"Denk+One"); 
    array_push($font_list,"Wendy+One"); 
    array_push($font_list,"Fjalla+One"); 
?> 
<script type="text/javascript"> 
    try{ 
     var fontsArray = <?php print(json_encode($font_list)); ?>; 
     console.log(fontsArray); 
    }catch(err){ 
     console.log(err.message); 
    } 
</script> 
0

Вам нужно передать массив на ваш взгляд:

<?php $this->load->view('theme-fonts', array('font_list' => $font_list); ?>

Я предлагаю скорее объявить массив в контроллере и передать его на главный экран, таким образом в массив будет доступен во всех просмотрах, которые вы загружаете.

+0

К сожалению, если это не было достаточно ясно. То, что я хочу, противоположно тому, что вы предложили. Я хочу, чтобы массив '$ font_list' от' theme-fonts.php' до 'page.php' –

+0

Почему бы вам не объявить массив в своем контроллере, а затем передать его на главный вид, таким образом он будет доступен для доступ как в 'theme-fonts.php', так и' page.php'. Я не уверен, как вы структурируете это, но вы не можете загрузить 'page.php' и ожидать, что массив будет доступен, если вы еще не объявили его. – mcryan

0

в рамках MVC синглтон класс доступен отовсюду, так что вам нужно хранить вы переменную некоторого свойства в вашем случае лучше место конфигурации объекта,

$this->config->set_item('item_name', 'item_value'); 

read about CI config

Смежные вопросы