Это мой первый проект codeigniter, и я получаю некоторые ошибки.
Я попытался отправить параметры функции контроллера со следующим кодом. Но он показывает ошибку в файле контроллера, что 'Missing arguement 1 for school::add_topic'
Вот мой код: -view file- Я включил только важные части кода
<?php
$createdby='';
?>
<a class="admin-btn" href="<?php echo base_url(); ?>index.php/school/add_topic/<?php echo myfunction(); ?>">Add Topic</a>
<?php
foreach ($r as $new)
{
?>
<?php
if($new->id_class==$class && $new->id_subject==$sub)
{
$createdby=$new->id_login;
?>
<tr><th>Class</th><td> <?php echo $new->class_name; ?></td></tr>
<tr><th>Subject</th><td>
<?php echo $new->subject_name; ?></td></tr>
<tr><th>Created By</th><td>
<?php echo $new->staff_name; ?></td>
<th>Created On</th><td>
<?php echo $new->created_on; ?></td></tr>
<?php
}
}
function myfunction()
{
global $createdby;
return $createdby;
}
?>
То, что я хочу сделать, это отправить переменную '$createdby'
в мою функцию контроллера 'add_topic()'
.
Это моя функция контроллера:
public function add_topic($createdby)
{
$data['createdby'] = $createdby;
$this->load->view('topic_add',$data);
}
Заранее спасибо.
На самом деле ваш поток кода неверен, так что вызванный $ createdby был вызван до его инициализации. Вы можете попробовать этот код:
<?php
$createdby='';
$selected = '';
if (!empty($r)) {
foreach ($r as $new)
{
if($new->id_class==$class && $new->id_subject==$sub)
{
$createdby=$new->id_login;
$selected = $new;
break;
}
}
}
?>
<a class="admin-btn" href="<?php echo base_url().'index.php/school/add_topic/'. myfunction(); ?>">Add Topic</a>
<?php
if (!empty($selected)) {
?>
<tr><th>Class</th><td> <?php echo $selected->class_name; ?></td></tr>
<tr><th>Subject</th><td>
<?php echo $selected->subject_name; ?></td></tr>
<tr><th>Created By</th><td>
<?php echo $selected->staff_name; ?></td>
<th>Created On</th><td>
<?php echo $selected->created_on; ?></td></tr> <?php
}
function myfunction()
{
global $createdby;
return $createdby;
}
?>
А также может быть вероятность того, что $ createdby не инициализируется, поэтому функция контроллера должна иметь необязательный параметр, чем фиксированный.
public function add_topic($createdby = '')
{
$data['createdby'] = $createdby;
$this->load->view('topic_add',$data);
}
index.php/school/add_topic/
- это просто вызов функции add_topic
в school
контроллера, но нет никакого параметра, поэтому функция ничего не получает. Добавьте параметр после косой черты (например, index.php/school/add_topic/xyz
), а $createdby
будет xyz.
Кроме того, вы можете использовать функцию site_url()
помощника URL вместо записи index.php/xxxxx
site_url('school/add_topic/param');
В вашем примере у вас очень сложная структура - почему бы не использовать ее так:
<a class="admin-btn" href="<?=site_url('school/add_topic/'.$createdby)?>">Add Topic</a>
Еще один намек: <?php echo $xyz;?>
<?php echo $xyz;?>
можно записать <?=$xyz?>
while =
быть эхом.