салам, у меня проблема с неопределенной переменной. Раньше я не использовал в контроллере переменную $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; ?>"><</a><?php echo $html_title; ?> <a href = "?ym=<?php echo $next; ?>">></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 не идентифицированы. Я должен передать этот код?
Спасибо
Я использую дом по умолчанию $ route ['default_controller'] = "home"; $ route ['404_override'] = ''; $ route ['translate_url_dashes'] = true;
Таким образом, похоже, что из вашего метода info вам нужно загрузить представление вместо перенаправления. Как это: $this->load->view('home/info', $data);. Вам необходимо сгруппировать все данные, которые вы хотите передать в представление, в один массив. Кроме того, в вашем методе index вместо перенаправления, возможно, просто выполните return $this->info();
возникает ошибка Произошла ошибка Не удалось загрузить запрошенный файл: home / info.php
Убедитесь, что ваш файл просмотра находится в правильном каталоге: application/views/home/info.php. Вы должны создать папку для своего класса и файл представления для каждого метода.
Я использую большую часть переменных $ data, потому что этот файл не загружается при просмотре XD. вы очень помогаете. Благодарность






Я думаю, вы ищете такую структуру:
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, я нашел то, что мне не хватает. еще раз спасибо
В контроллереИзмените эти строки
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;
Пожалуйста. Отметьте это как ответ, иначе другие могут напечатать больше ответов
Как выглядят ваши маршруты? Вместо перенаправления вы должны загрузить представление и передать туда переменные. Посмотрите эту документацию для динамического добавления данных в представление: codeigniter.com/user_guide/general/…