Почему моя переменная равна нулю? - PullRequest
3 голосов
/ 07 июня 2011

В настоящее время я редактирую рабочий проект с некоторым опытом работы с PHP.

Я немного знаю об основах, но знаю только немного о MVC и Code-Igniter, поэтому, конечно, я столкнусь с некоторыми проблемами.

Моя первая проблема в том, что я пытаюсь заполнить выпадающий список из контроллера.

Представление называется "Overview_screen.php", а контроллер называется "Overview.php".

В контроллере у меня есть функция:

private function getYears()
{
    return array('Test1', 'Test2', 'Test3', 'Test4');
}

который я установил в индекс в годах:

function index()
{
    $years = $this->getYears();             
    $menu = $this->getMenu();       
}           

когда я делаю var_dump в $ menu, он показывает меню так, как должно быть показано, но когда я делаю var_dump в $ years, он говорит:

PHP Error was encountered   
Severity: Notice    
Message: Undefined variable: years    
Filename: views/overview_screen.php    
Line Number: 92

Кто-нибудь знает, почему это происходит / не работает?

[править]

Добавлена ​​информация:

<?php
print_r(CI_session::userdata('docent_id'));

if (!$this->session->userdata('docent_id')) {
    header ('Location: /bpv-registratie/welcome.html');
}
?>

<html>
<head>
<title>Registratie Systeem</title>

</head>
<body>

<div id="topmenu">
    <a href="/registratie/" class="button">Start</a>
    <a href="/registratie/welcome/logout.html" class="button">Log uit</a>       
</div>

<div id="topmenuright">
<?php var_dump($years); ?>
    <select>        
        <?php foreach ($years as $row):?>
            <option><?=$row?></option>
        <?php endforeach;?>
    </select>
</div>

<div id="menu">
    {menu}
</div>

<div id="content">
    {content}
</div>

</body>
</html>

Ответы [ 4 ]

2 голосов
/ 07 июня 2011

Вам необходимо отправить переменные для просмотра файла, как показано ниже

function index()
{
    $data['years'] = $this->getYears();             
    $data['menu'] = $this->getMenu();       
    $this->load->view('views/overview_screen.php',$data);
}

теперь вы можете использовать $ year, $ menu в качестве переменных в файле просмотра

1 голос
/ 07 июня 2011

Учитывая вывод, ваш взгляд, вероятно, будет проходить через библиотеку анализатора CI.

Код должен быть таким:

function index()
{
    $this->load->library('parser');
    $data['years'] = $this->getYears();             
    $data['menu'] = $this->getMenu(); 

    $this->parser->parse('overview_screen',$data);

}

Я говорю это, потому что вижу использованиескобок внутри файла представления, так как CI использует свой собственный механизм синтаксического анализа (таким образом, {menu} обрабатывается как <?php echo $menu; ?>, что, в свою очередь, относится к индексу 'menu', установленному вами в массиве $ data)

Вы называете это представлением регулярно;это как код @praneeth, но без с использованием расширения php!итак:

$this->load->view('overview_screen',$data)
0 голосов
/ 07 июня 2011

Можете ли вы привести больше примеров кода о том, куда вы помещаете вызов Dump, а также о теле getMenu.Это было бы полезно, чтобы узнать, что происходит с $ years var

0 голосов
/ 07 июня 2011

Если вы var_dump переменная $menu вне функции / класса, она не будет работать! Попробуйте использовать:

function index()
{
    global $years;
    global $menu;
    $years = $this->getYears();             
    $menu = $this->getMenu(); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...