Codeigniter, неопределенная переменная без $ data

салам, у меня проблема с неопределенной переменной. Раньше я не использовал в контроллере переменную $data. после того, как я использую $data, он по-прежнему не отображается в моем представлении (называемом приборной панелью). Может ли кто-нибудь помочь мне решить этот код?

Извините, я знаю, что раньше были подобные вопросы. но я хочу знать свою, в чем проблема, кроме моего кода в другом файле все в порядке

home.php как контроллер

class Home extends CI_Controller{
public function __construct(){
    parent::__construct();
    $this->loginstatus->check_login();
    $this->load->library('template');
    $this->load->model('day_off_model');
}

public function index(){
    redirect('home/info');
}

public function info(){
    $data = array();
    $data['ym'] = date('Y-m');
    $this->template->display('information/dashboard');

    date_default_timezone_set('Asia/Tokyo');

    //$data['harian'] = 'a';
    // Get prev & next month
    if (isset($_GET['ym'])) {
        $ym = $_GET['ym'];
    } else {
        // Bulan ini
        $ym = date('Y-m');
    }
    //echo $ym;

    // Check format
    $timestamp = strtotime($ym . '-01');
    if ($timestamp === false) {
        $timestamp = time();
    }

    // Today
    $today = date('Y-m-j', time());

    // H3 title
    $html_title = date('m Y', $timestamp);

    $parts =  explode(' ',$html_title);
    $date   = $parts[0].' '.$parts[1];

    // return $date;
    // print_r($html_title);
    // die();

    $html_title=$this->tanggal->tanggal_indo_month_yeartext($date);

    // print_r($html_title);
    // die();

    // link prev next     mktime(hour,minute,second,month,day,year)
    $prev = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)-1, 1, date('Y', $timestamp)));
    $next = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)+1, 1, date('Y', $timestamp)));

    // Jumlah hari seblan
    $day_count = date('t', $timestamp);

    // 0:Minggu 1:Senin 2:Selasa ...
    $str = date('w', mktime(0, 0, 0, date('m', $timestamp), 1, date('Y', $timestamp)));
    //$str = date('w', mktime(0, 0, 0, date('m', $timestamp), 1, date('Y', $timestamp))); //senin, selasa, rabu

    // Create Calendar
    $weeks = array();
    $week = '';

    // cell dengan tabel kalender
    $week .= str_repeat('<td></td>', $str);
    //$week .= str_repeat('<td></td>', $str-1);

    for ( $day = 1; $day <= $day_count; $day++, $str++) {

        $date = $ym.'-'.$day;
        $exist = $this->day_off_model->get_all(false)->num_rows();
        // print_r($exist);
        // die();
        if ($today == $date) {
            $week .= '<td class = "today">'.$day;
        } else {
            $week .= '<td>'.$day;
        }
        $week .= '</td>';

        // End of the week OR End of the month
        if ($str % 7 == 6 || $day == $day_count) {
        //if ($str % 7 == 0 || $day == $day_count) {
            if ($day == $day_count) {
                // empty cell
                $week .= str_repeat('<td class = "column_custom"></td>', 6 - ($str % 7));
                //$week .= str_repeat('<td></td>', 7 - ($str % 7));
            }

            $weeks[] = '<tr>'.$week.'</tr>';

            // weeks
            $week = '';
        }
    }
    //redirect('home/info');
}

dashboard.php как представление

<?php if ($this->session->userdata('user_type_id')==TRUE){?>
<div class = "row">
<div class = "col-md-12">
    <h1>Sistem Informasi Absensi Kepegawaian</h1>
    <hr/>
    Informasi terbaru Absensi Kepegawaian<br/>
    Pascasarjana Universitas Diponegoro
    <?php echo validation_errors(); ?>
</div>
</div>
<div class = "row">
<?php echo $ym; ?>
<div class = "col-md-4">
    <h3><a href = "?ym=<?php echo $prev; ?>">&lt;</a><?php echo $html_title; ?> <a href = "?ym=<?php echo $next; ?>">&gt;</a></h3>
    <br>
    <table class = "table table-bordered dashboard">
        <tr>
            <th class = "th_custom" width = "30px">Minggu</th>
            <th class = "th_custom" width = "30px">Senin</th>
            <th class = "th_custom" width = "30px">Selasa</th>
            <th class = "th_custom" width = "30px">Rabu</th>
            <th class = "th_custom" width = "30px">Kamis</th>
            <th class = "th_custom" width = "30px">Jum'at</th>
            <th class = "th_custom" width = "30px">Sabtu</th>
        </tr>
        <?php
            foreach ($weeks as $week) {
                echo $week;
            }   
        ?>
    </table>
</div>
</div>
<?php }
else{?>
<h3>Silahkan login sebagai admin terlebih dahulu</h3>
<?php }?>

Мне тоже интересно узнать о $ym. вариабельные $prev, $html_title и $next не идентифицированы. Я должен передать этот код?

Спасибо

Как выглядят ваши маршруты? Вместо перенаправления вы должны загрузить представление и передать туда переменные. Посмотрите эту документацию для динамического добавления данных в представление: codeigniter.com/user_guide/general/…

Timothy Fisher 30.05.2018 19:03

Я использую дом по умолчанию $ route ['default_controller'] = "home"; $ route ['404_override'] = ''; $ route ['translate_url_dashes'] = true;

Rifqi Ramadhani 30.05.2018 19:20

Таким образом, похоже, что из вашего метода info вам нужно загрузить представление вместо перенаправления. Как это: $this->load->view('home/info', $data);. Вам необходимо сгруппировать все данные, которые вы хотите передать в представление, в один массив. Кроме того, в вашем методе index вместо перенаправления, возможно, просто выполните return $this->info();

Timothy Fisher 30.05.2018 19:37

возникает ошибка Произошла ошибка Не удалось загрузить запрошенный файл: home / info.php

Rifqi Ramadhani 31.05.2018 00:23

Убедитесь, что ваш файл просмотра находится в правильном каталоге: application/views/home/info.php. Вы должны создать папку для своего класса и файл представления для каждого метода.

Timothy Fisher 31.05.2018 01:04

Я использую большую часть переменных $ data, потому что этот файл не загружается при просмотре XD. вы очень помогаете. Благодарность

Rifqi Ramadhani 31.05.2018 03:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
128
2

Ответы 2

Я думаю, вы ищете такую ​​структуру:

class Home extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        // load other stuff
    }

    public function index()
    {
        $this->info();
    }

    public function info()
    {
        $data = [];

        // group all data you wish to pass to the view inside the $data array in this format:
        // $data[<variableName>] = <variableValue>

        $this->load->view('myView', $data);
    }
}

Все ваши переменные, которые должны быть доступны в представлении, должны быть определены как ключ в массиве, который вы передаете, в данном случае $data:

$data['myVar'] = 'myValue'

В представлении будет соответствовать следующему:

var_dump($myVar); // result: myValue

Вы можете сделать то же самое с массивами, которые хотите передать:

$data['myArray'] = [1, 2, 3, 4];

И получить доступ к нему в представлении следующим образом:

var_dump($myArray); // result: [1, 2, 3, 4]

это невероятно помогает моей работе. спасибо за отладку с var_dump, я нашел то, что мне не хватает. еще раз спасибо

Rifqi Ramadhani 31.05.2018 03:18

В контроллереИзмените эти строки

public function info(){
    $data = array();
    $data['ym'] = date('Y-m');
    $this->template->display('information/dashboard');

К

public function info(){
    $data['ym'] = date('Y-m');
    $this->template->display('information/dashboard', $data);

В файле просмотра вы можете повторить значение ym's следующим образом;

echo $ym;

Пожалуйста. Отметьте это как ответ, иначе другие могут напечатать больше ответов

NSJ 31.05.2018 06:06

Другие вопросы по теме